php - 用另一个数组递归替换具有特定键的一个数组
问题描述
我有一个数组,其中键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 - 将自定义字段添加到 WooCommerce 新帐户页面
- python - 使用烧瓶创建数据库,既没有设置 SQLALCHEMY_DATABASE_URI 也没有设置 SQLALCHEMY_BINDS
- spring - Spring批量限制作业执行
- c# - 绑定延迟后以编程方式触发事件
- kubernetes - 创建指向两个服务的 Kubernetes 入口
- laravel - 按月查询的 Laravel Group 数据适用于 MySQL,但在 PostgreSQL 数据库上失败
- python - 如何使用 Selenium [Python] 获取 iframe 源
- java - M1 Mac 上 System.getProperty("os.arch") 的值?
- git - 如何从以前的 Git 提交中删除文件
- c# - 从 Xamarin.Forms 调用 Android 函数