2013-08-30 28 views
1

訪問數組項的同級所以我有一個數組,我動態生成,看起來像這樣:我如何在PHP

$array[1] = array(
    'item1' => 'value1', 
    'item2' => 'value2', 
    'item3' => 'value3', 
    'item4' => 'value4', 
    'item5' => 'value5' 
); 

$array[2] = array(
    'item1' => 'value100', 
    'item2' => 'value200', 
    'item3' => 'value300', 
    'item4' => 'value400', 
    'item5' => 'value500' 
); 

... 

現在我必須從某處value2'coming的「ITEM2」 =」的值否則

我試圖找到一種方法,只用一行代碼,訪問陣列中的所有項目,其中「ITEM2」 =「值」和修改「ITEM4」

我的價值如果我知道我只需要對數組[1]進行更改,就可以輕鬆做到這一點:

$array[1]['item4'] = 'new value'; 

但我只需要爲項目,其中「ITEM2」等於「值」

我知道我可以循環認爲它更新的價值,但我試圖找到一種方式做它只有一行代碼。 jQuery可以很容易地找到兄弟姐妹,當他們匹配一定的標準也許有類似的PHP我不知道?

+0

請問爲什麼只有一個代碼行? –

+0

你是什麼意思,「只有一行代碼」? –

+0

我在會話中擁有這個數組,我希望能夠以這種方式更新它:$ array [$ key] ['item4'] ='new value'; (其中item2 = value2) – matt

回答

2

它不是很漂亮,但這裏:

foreach($array as &$child) { if($child['item2'] == 'value2') { $child['item4'] = 'new value'; }} 

我希望沒有人需要讀取你的代碼...

3

希望這有助於

$array[1] = array(
    'item1' => 'value1', 
    'item2' => 'value2', 
    'item3' => 'value3', 
    'item4' => 'value4', 
    'item5' => 'value5' 
); 

$array[2] = array(
    'item1' => 'value100', 
    'item2' => 'value200', 
    'item3' => 'value300', 
    'item4' => 'value400', 
    'item5' => 'value500' 
); 

function test(&$item, $key){ 
    if($item['item2'] == 'value2'){ 
     $item['item4'] = 'new value'; 
    } 
} 

array_walk($array, 'test');