假设我有一个多维关联数组:
$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可以有不同的结构。
答案 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'];