2010-06-01 61 views
0

我想通過使用它的一個子鍵值作爲索引來使這個多維數組更易讀。所以這個數組:通過php多維數組操作:用其中一個值替換索引

array(
[2]=>array('group_name'=>'red','members'=>array()), 
[3]=>array('group_name'=>'green','members'=>array()), 
[4]=>array('group_name'=>'blue','members'=>array()), 
); 

相信我能環和重建陣列,但我不知道這將是一個專家拿這個:

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()), 
); 

應該成爲這個?

回答

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的項目,它們將全部捲入結果中。

+0

謝謝。我最初有點希望我可以避免一個循環,但無論如何,事實證明,我需要循環一次通過我的初始數組,因爲其他原因,所以我會接受你的答案,因爲它做的工作! – pixeline 2010-06-01 20:29:50

+0

pixeline,np。你可以在構建這個數組的循環中建立所有的索引/索引:D – 2010-06-01 20:57:13