PHP - 将2D数组中的一列转换为指定列名的1D数组

时间:2014-12-31 14:24:07

标签: php arrays

我有一个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']。 有没有简单的方法来实现这个目标?

5 个答案:

答案 0 :(得分:6)

自PHP 5.5.0起,您可以使用...

$myfield_arr = array_column($query_result, 'myfield_name');

...将列与二维数组隔离。

请参阅http://php.net/manual/en/function.array-column.php

答案 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