2013-03-30 50 views
0

我有一個隨機鍵的數組(它是一個菜單生成器被推送到JSON)。所以在這個多維我試圖array_push一些更多的細節。但事情就是這樣,我不知道數組中的關鍵或維度。我只知道關鍵。找到數組中的鍵,並在該鍵中的array_push

所以我想要做的是以下。

$arr[unique_key1] = value; 
$arr[unique_key1][unique_key2] = 'value'; 
$arr[unique_key1][unique_key2][unique_key3] = 'value'; 
$arr[unique_key1][unique_key2][unique_key3][unique_key4] = 'value'; 

$key = unique_key4; // (example) key to look for and array push 

if (array_key_exists($key, $arr)) { // check to be sure, should be there 
    // here I want to loop until i found the specific key, and on that place array_push 
} 
else { 
    // error handeling 
} 

在這個例子中,$編曲很簡單,但真正一個包含約800項在不同的層次。

所以總結:在大數組

  1. 查找鍵(它仍然是唯一的)
  2. array_push到陣列的一部分。

非常感激

編輯:更詳細的說明,還不夠清楚

+0

遞歸函數找到多維數組的一個關鍵是你在找什麼,很多關於谷歌的例子.. – dbf

回答

0

我認爲這是你想要的..從下面的代碼,你會結識的關鍵,做你想...

if ($array_in_which_we_can_add = multi_array_key_exists($key, $arr)) { 
     array_push($array_in_which_we_can_add, 'crap I want to add'); 
    } 
    else { 
     // error handeling 
    } 



function multi_array_key_exists($needle, $haystack) { 


foreach ($haystack as $key => $value) : 

    if ($needle == $key) 
     return $key; 

    if (is_array($value)) : 
     if (multi_array_key_exists($needle, $value) == true) 
      return true; 
     else 
      continue; 
    endif; 

endforeach; 

return false;} 

編輯:

這會做exactl Ÿ你想

if ($array_in_which_we_can_add = multidimensionalArrayMap($needle, $haystack)) { 
    print_r($array_in_which_we_can_add); 
} 
else { 
    // error handeling 
} 

$flag = 0; 

function multidimensionalArrayMap($needle, $haystack) { 
    $newArr = array(); 

    foreach($haystack as $key => $value) 
    { 
     if($key == $needle) 
     $flag = 1; 
     $newArr[ $key ] = ((is_array($value) && $key != $needle) ? multidimensionalArrayMap($needle, $value) :'crap I want to add'); 
    } 

    if($flag) 
    return $newArr; 

    return false; 

    } 
+0

感謝分享,但我一直在這個瞎搞和它沒有做它需要做的事情。 我知道關鍵,我只是不知道它在哪個維度。所以我不需要一個搜索關鍵字的函數,我需要一種方法來添加一些關鍵字。 因此,請在右側的按鍵處右鍵,然後添加添加數組。 – Matt

+0

我看你做了什麼。我的不好,我不夠清楚。編輯它 – Matt

+0

嗯。你知道關鍵的是什麼? $ arr [unique_key1] [unique_key2] [unique_key3] [unique_key4] [] ='其他值';將是明顯的方式插入... – bestprogrammerintheworld