2015-09-16 2 views
0

предположива У меня есть многомерный ассоциативный массив:замены в многомерном ассоциативном массиве

$haystack = 
     [ 
      "httpMethod" => "GET", 
      "responseFormat" => "", 
      "query" => [ 
      "uname" => "username", 
      "pass" => "password" 
      ] 
      ]; 

И у меня есть еще один простой массив:

$needle = [ 
     "username" => "123", 
     "password" => "456" 
    ]; 

Моя цель заключается в поиске первого рекурсивно, где value say «username», и замените его значением из второго массива.

Так возвращаемый массив это будет:

$result = [ 
      "httpMethod" => "GET", 
      "responseFormat" => "", 
      "query" => [ 
      "uname" => "123", 
      "pass" => "456" 
      ] 
      ]; 

Что является наиболее эффективным наиболее читаемым способом сделать это? зная, что массив haystack может быть по-разному структурирован.

+2

Вы пробовали что-нибудь, или вы просто ищете для свободного кода? – Sean

+1

Я просто застрял, и да, у меня есть полное приложение. Пожалуйста, посмотрите мои другие сообщения. – Confidence

ответ

2

Попробуйте array_walk_recursive(), любая клавиша, содержащая массив, не будет передана функции.

array_walk_recursive($haystack, function(&$item, $key) use ($needle) { 

    if (array_key_exists($item, $needle)) 
     $item = $needle[ $item ]; 

}); 
1

Это самый основной способ

$haystack['query']['uname'] = $needle['username']; 
Смежные вопросы