我有一个数组,其中所有键 type == 'foo'
的数组都必须替换为自定义数组。
基本上我需要找到一个特定的数组,然后用其他数组替换它。
这里的问题是您可以轻松地替换一个数组,但是当您插入多个数组时,您正在移动键,因此下一个数组 type == 'foo'
将不会被替换
如有任何帮助,我们将不胜感激。
这是我所拥有的:
$array = array(
array(
'options' => array(
array(
'type' => 'foo'
),
array(
'type' => 'foo'
),
array(
'type' => 'bar'
)
)
),
array(
'options' => array(
array(
'type' => 'bar'
),
array(
'type' => 'bar'
),
array(
'type' => 'foo'
)
)
),
);
我有一个数组,它应该替换任何 type == 'foo'
$array_foo = array(
array(
'type' => 'custom'
),
array(
'type' => 'custom_2'
),
array(
'type' => 'anything'
),
);
这是期望的输出:
$array = array(
array(
'options' => array(
array(
'type' => 'custom'
),
array(
'type' => 'custom_2'
),
array(
'type' => 'anything'
),
array(
'type' => 'custom'
),
array(
'type' => 'custom_2'
),
array(
'type' => 'anything'
),
array(
'type' => 'bar'
)
)
),
array(
'options' => array(
array(
'type' => 'bar'
),
array(
'type' => 'bar'
),
array(
'type' => 'custom'
),
array(
'type' => 'custom_2'
),
array(
'type' => 'anything'
),
)
),
);
谢谢。
最佳答案
这是使用 2 个嵌套 foreach 循环 和 array_merge()
的方法使用临时数组:
// Pass the array by reference
foreach ($array as &$sub) {
// Temporary array
$new_options = [];
// Loop through options
foreach ($sub['options'] as $opt) {
// if type foo: replace by $array_foo items
if ($opt['type'] == 'foo') {
$new_options = array_merge($new_options, $array_foo);
// else, keep original item
} else {
$new_options[] = $opt;
}
}
// replace the options
$sub['options'] = $new_options;
}
并检查输出:
echo '<pre>' . print_r($array, true) . '</pre>';
关于php - 递归用另一个数组替换具有特定键的一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52117395/