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