Chcel by som, aby bolo toto viacrozmerné pole čitateľnejšie tým, že sa ako index použije jedna z jeho hodnôt podkľúča. Toto pole:
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()),
);
malo by sa to stať:
array(
[2]=>array("group_name"=>"red","members"=>array()),
[3]=>array("group_name"=>"green","members"=>array()),
[4]=>array("group_name"=>"blue","members"=>array()),
);
Určite by som to dokázal prebudovať a znovu zostaviť pole, ale premýšľal som, čo by za to mal odborník?
odpovede:
2 pre odpoveď č. 1Vytvoril by som index, ktorý používa odkazy na smerovanie k riadkom v pôvodnom poli. Skúste niečo také:
$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
# (
# )
#
# )
#
# )
Poznámka: Index vždy vráti pole. Ak máte viac rovnakých položiek group_id
, budú všetci zahrnutí do výsledku.