在多维关联数组中替换

时间:2015-09-16 15:53:48

标签: php arrays

假设我有一个多维关联数组:

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

我有另一个简单的数组:

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

我的目标是以递归方式搜索第一个值,其中值为" username",并将其替换为第二个数组中的值。

所以返回的数组是:

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

最有效,最可读的方法是什么?知道haystack-array可以有不同的结构。

2 个答案:

答案 0 :(得分:2)

尝试array_walk_recursive(),任何包含数组的键都不会传递给函数。

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

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

});

答案 1 :(得分:1)

这是最基本的方式

$haystack['query']['uname'] = $needle['username'];