我有一个2D数组,它保存了mysql查询的结果。这是我的代码
$res=$ $this->dbconnection->Query($Query);
$query_result= array();
while($colRow=mysqli_fetch_array($res))
{
$query_result[]= $colRow;
}
现在我想要1D数组,其中包含$ query_result中特定列下的所有行。
例如,数据库表包含字段名称和ID,我知道,$query_result[]= $colRow['Name']
会将查询结果提供给ID。但我需要分别在Name和Id下的所有行,例如$name= $query_result['Name']
,$Id= $query_result['ID']
。
有没有简单的方法来实现这个目标?
答案 0 :(得分:6)
自PHP 5.5.0起,您可以使用...
$myfield_arr = array_column($query_result, 'myfield_name');
...将列与二维数组隔离。
答案 1 :(得分:1)
请尝试
$res=$ $this->dbconnection->Query($Query);
$query_result= array();
while($colRow=mysqli_fetch_array($res))
{
if (empty($query_result))
$query_result = $colRow;
else
{
foreach ($colRow as $key=> $val)
$query_result[$key][] = $val;
}
}
答案 2 :(得分:1)
在您的评论中澄清问题后,解决方案是:
while($colRow=mysqli_fetch_array($res)){
foreach ($colRow as $key => $value) {
if(!isset($query_result[$key])) $query_result[$key]=array();
$query_result[$key][] = $value;
}
}
答案 3 :(得分:0)
使用类似的东西:
foreach ($rows as $key => $value) {
$$key = $value;
}
答案 4 :(得分:0)
将行数组转换为列数组:
<?php
$arr2dm = [['key1' => 'val11', 'key2' => 'val21'], ['key1' => 'val12', 'key2' => 'val22']];
foreach ($arr2dm as $arr) {
foreach ($arr as $k => $v) {
$res[$k][] = $v;
}
}
print_r($res);
http://sandbox.onlinephpfunctions.com/code/514050d07f9ed599e010ccd11e51fc18e39647fa