我想通过使用其子键值之一作为索引来使这个多维数组更具可读性。所以这个数组:
array(
[0]=>array('group_id'=>'2','group_name'=>'red','members'=>array()),
[1]=>array('group_id'=>'3','group_name'=>'green','members'=>array()),
[2]=>array('group_id'=>'4','group_name'=>'blue','members'=>array()),
);
应该成为这个:
array(
[2]=>array('group_name'=>'red','members'=>array()),
[3]=>array('group_name'=>'green','members'=>array()),
[4]=>array('group_name'=>'blue','members'=>array()),
);
当然,我可以循环并重建数组,但我想知道什么是专家对此?
答案 0 :(得分:2)
我会创建一个索引,使用引用指向原始数组中的行。尝试这样的事情:
$group_index = array();
foreach($foo as &$v){
$g = $v['group_id'];
if(!array_key_exists($g, $group_index)){
$group_index[$g] = array();
}
$group_index[$g][] = $v;
}
echo print_r($group_index[2], true);
# Array
# (
# [0] => Array
# (
# [group_id] => 2
# [group_name] => red
# [members] => Array
# (
# )
#
# )
#
# )
注意:索引将始终返回一个数组。如果您有多个具有相同group_id
的项目,则会将所有项目都归结为结果。