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
}
}
答案 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);