2014-07-07 86 views
0

更換陣列中的一個重要的價值比方說,我有一個數組是這樣的:搜索和PHP

$myArray = array( 
    'a' => 'alpha', 
    'b' => array(
     'Z' => 'zulu') 
    ); 

我想搜索鍵「Z」和替換它的值。

我試過迭代器,foreach循環等,但沒有運氣。

*修正的語法。

+1

這不是PHP數組語法。這是Ruby hash語法與PHP「array」關鍵字之間的交叉。請發佈有效的PHP,以便我們完全理解您的意圖。 –

+1

@MichaelBerkowski它看起來更好嗎?我需要找到數組中的數組「Z」,並替換它的值。非常感謝 – L4zl0w

+1

http://stackoverflow.com/questions/7801463/replace-certain-items-within-multidimensional-array –

回答

1

你可以傳遞一個參考array_walk_recursive:

示例:http://codepad.viper-7.com/ajsYEn

+0

由於某些原因,它不會設置新值。非常感謝 – L4zl0w

+2

@ L4zl0w哎呀,忘了把$ newvalue放在範圍內,請參閱我的編輯 – Steve

+0

這似乎是正確的答案,因爲它沒有在use()中傳入新值時不起作用。非常感謝! – L4zl0w

1
<?php 

$myArray = array(
    'a' => 'alpha', 
    'b' => array (
     'Z' => 'zulu' 
    ), 
); 


foreach($myArray as $key => $value) { 
    if (is_array($value)) { 
     foreach($value as $k => $v) { 
      if ($k == 'Z') 
      { 
       //do something 
       $myArray[$key]['newKey'] = $v; 
       unset($myArray[$key][$k]); 
      } 
     } 
    } 
} 

print_r($myArray); 

輸出:

Array 
(
    [a] => alpha 
    [b] => Array 
     (
      [newKey] => zulu 
     ) 

) 
+0

我可以看到第二個foreach背後的邏輯,但這個例子並沒有告訴我如何改變關鍵'Z'。非常感謝 – L4zl0w

+1

@ L4zl0w現在檢查! – gpupo

1

您可以使用array_walk_recursive和通過引用傳遞:

array_walk_recursive($myArray, function(&$item, $key) { 
    if ($key == 'Z') $item = "hi"; 
}); 

http://sandbox.onlinephpfunctions.com/code/ad750cbb5b30b87f9e6068ba15420cf924ed5a7b

+0

由於某些原因,它不會設置新值。非常感謝 – L4zl0w

+1

是的 - 你可以在我發佈的鏈接中看到。如果它不在你的代碼中工作,那麼我們需要看到更多,因爲還有其他事情發生。 – dave