/ / manipulácia s viacrozmerným poľom / php: nahraďte index jednou z jeho hodnôt - php, polia, viacrozmerné pole

php multi-dimenzionální manipulácia s poľom: nahradiť index jednou z jeho hodnôt - php, array, multidimensional-array

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ď č. 1

Vytvoril 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.