繁体   English   中英

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

[英]Remove indexes of multidimensional array to convert to a list of many one dimensional arrays PHP

为模糊的提问道歉,我是相当新的。 我一直在寻找,但似乎找不到适合我的方案的解决方案。

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

目前我有 -

$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,即没有顶级索引......

$output =

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

已经很晚了,我的大脑躲开了我,非常感谢您的任何指点。

编辑:将对此进行调度,结果发现我的问题是格式化问题,在将 output 保存到文件时将其分配为变量时我没有转义 ($) 符号。 谢谢大家的回复,让我直截了当

结果和预期结果基本相同,因为正如@Nick 指出的那样,您需要拥有顶级键(0,1,2)。 (否则,您将如何确定哪个 id 属于 john、paul 和 george?)

根本不可能存储这样的数组:

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

它必须像这样存储:(使用顶级键(在本例中:0,1 和 2))

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  )
)

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

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

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

无法根据需要存储值,但当然可以根据需要使用 output:

//$data_value is an array in every row 
foreach($data as $data_value) {
    print_r($data_value);
}

这将产生 output:

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

做这个:

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

print_r($data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM