php中的多维数组

时间:2016-08-12 07:58:24

标签: php arrays

Array
(
    [0] => Array
        (
            [id] => 1
            [sht] => L
            [tm] => tttt
        )

    [1] => Array
        (
            [id] => 7
            [tm] => xyz
        )

    [2] => Array
        (
            [id] => 12
            [hand] => R
        )

    [3] => Array
        (
            [id] => 20
        )

)

我想将所有id带到一个数组中,如下所示我怎么能做,请建议我尝试但没有工作

我尝试使用foreach循环

foreach($results as $value){
   while(list($key,$value) = each($results)){
     echo $value
   }

}

4 个答案:

答案 0 :(得分:1)

您正在寻找array_column(),它会返回输入的单个列中的值,由 column_key 标识。

$ids=array_column($results,"id");
print_r($ids);

其中$ids将是仅由id组成的单维数组。

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

虽然您不能在数组中使用相同的。上述结果可能就是这样,

Array
 (
   [0] => 1
   [1] => 7
   [2] => 12
   [3] => 20
 )

一个由id组成的数组,只能在其上迭代。

  PHP版本大于 5.3

支持

array_column()

答案 1 :(得分:0)

你想获得一个包含所有id的单维数组吗?如果是这样,您可以使用此功能array_column()

试试这个:

  $array = array(
    array(
      'id' => 1,
      'sht' => 'L',
      'tm' => 'tttt'
    ),
   array(
      'id' => 7,
      'tm' => 'xyz'
    ),
   array(
       'id' => 12,
       'hand' => 'R'
   ),
   array(
     'id' => 20
   )
);

$id = array_column($array, "id");

结果:

 Array
 (
   [0] => 1
   [1] => 7
   [2] => 12
   [3] => 20
 )

答案 2 :(得分:0)

在示例输出中,您在数组中有重复的键 - 这不起作用。

之后,你或多或少都会做到
$src=array(
    array('id'=>1,'sht'=>'L','tm'=>'tttt'),
    array('id'=>7,'tm'=>'xyz'),
    array('id'=>12,'hand'=>'R'),
    array('id'=>20),
);
$out=array();

function get($item,$key,$find){
    global $out;
    if($key==$find)$out[$key][]=$item;
}

array_walk_recursive($src,'get','id');
array_walk_recursive($src,'get','tm');
array_walk_recursive($src,'get','sht');

echo '<pre>',print_r($out,true),'</pre>';

答案 3 :(得分:0)

使用array_walk_recursive函数的解决方案:

// $arr is your initial array
$grouped = [];
array_walk_recursive($arr, function($v, $k) use(&$grouped){
    (isset($grouped[$k]))? $grouped[$k][] = $v : $grouped[$k] = [$v];
});

print_r($grouped);

DEMO link