Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除多维数组的索引以转换为多个一维数组的列表_Php_Arrays - Fatal编程技术网

Php 删除多维数组的索引以转换为多个一维数组的列表

Php 删除多维数组的索引以转换为多个一维数组的列表,php,arrays,Php,Arrays,抱歉问得含糊不清,我是新来的。我一直在寻找,但似乎找不到适合我情况的解决方案 我试图将循环mysql查询的输出存储为循环外使用的变量,就像在循环内打印结果一样。我试图节省开销,因为我继承了一个函数,该函数经常使用这个大数据集,并试图通过保存输出而不是每次查询数据库来减少对数据库的调用 目前我有- $data = array(); $sql = mysqli_query($con, SELECT * FROM my_table); while($row = mysqli_fetch_assoc($

抱歉问得含糊不清,我是新来的。我一直在寻找,但似乎找不到适合我情况的解决方案

我试图将循环mysql查询的输出存储为循环外使用的变量,就像在循环内打印结果一样。我试图节省开销,因为我继承了一个函数,该函数经常使用这个大数据集,并试图通过保存输出而不是每次查询数据库来减少对数据库的调用

目前我有-

$data = array();
$sql = mysqli_query($con, SELECT * FROM my_table);
while($row = mysqli_fetch_assoc($sql)){
  $data[] = $row;
}
print_r($data);
这导致:

Array ( 
[0] => Array ( [id] => 1 [name] => john [age] => 44  ) 
[1] => Array ( [id] => 2 [name] => paul [age] => 30  )
[2] => Array ( [id] => 3 [name] => george [age] => 25  )
)
但我需要这样的输出,即没有顶级索引

$output =

Array ( [id] => 1 [name] => john [age] => 44  ) 
Array ( [id] => 2 [name] => paul [age] => 30  )
Array ( [id] => 3 [name] => george [age] => 25  ) ;
时间不早了,我的脑子也没了,非常感谢你的指点

编辑: 在这个问题上会有一个mulligan,结果发现我的问题是格式问题,在将输出保存到文件时,在将其指定为变量时,我没有转义($)符号。谢谢大家的回复,让我明白了这一点。请执行以下操作:

$data = [];
$i = 0;
while ($row = mysqli_fetch_assoc($sql)) {
    foreach( $row as $field => $value) {
        $data[$i][$field] = $value:
    }
    $i++;
}

print_r($data)

结果和预期结果基本上是一样的,因为正如@Nick指出的您需要有顶级键(0,1,2)。(除此之外,您如何确定哪个id属于约翰、保罗和乔治?)

像这样存储
数组是不可能的:

Array ( [id] => 1 [name] => john [age] => 44  ) 
Array ( [id] => 2 [name] => paul [age] => 30  )
Array ( [id] => 3 [name] => george [age] => 25  )
它必须这样存储:(使用顶级键(在本例中为0、1和2))

$data[0]['name']
的值将是john,
$data[1]['name']
的值将是paul等

如果您参考
$data[0]
它包含数组:
数组([id]=>1[name]=>john[age]=>44)

如果您参考
$data[1]
它包含数组:
数组([id]=>2[name]=>paul[age]=>30)

无法存储所需的值,但当然可以根据需要输出:

//$data_value is an array in every row 
foreach($data as $data_value) {
    print_r($data_value);
}
这将产生输出:

Array
(
    [id] => 1
    [name] => john
    [age] => 44
)
Array
(
    [id] => 2
    [name] => paul
    [age] => 30
)
Array
(
    [id] => 3
    [name] => george
    [age] => 25
)

您需要顶级索引。否则,您必须有多个变量来存储数据,例如,
$data0
$data1
等。您可以使用
foreach
循环来处理保存的数据。完全正确!谢谢NickThere仍然是顶级索引。在结果输出方面,这个解决方案实际上与OP的没有什么不同。感谢您的回复,我相信这是一个有趣的方法,在某个时候会派上用场,但正如@bestprogrammerintheworld指出的,是的,输出与original@midget这不有趣。数组中的每个值都有某种类型的键,或者它们永远无法被访问,仅仅因为print\r打印0-a、1-b、3-c并不意味着它不是[a、b、c]@ijameshp2-这就是关键所在。他们需要密钥(本例中为顶级密钥)。听起来他希望JSON@bestprogrammerintheworldThanks中包含密钥,以获得快速回复和详细解释。很高兴知道我所尝试的是不可能的,而且可能是有原因的!没问题。很乐意帮忙!
Array
(
    [id] => 1
    [name] => john
    [age] => 44
)
Array
(
    [id] => 2
    [name] => paul
    [age] => 30
)
Array
(
    [id] => 3
    [name] => george
    [age] => 25
)