我有一个用php(codeigniter)开发的网站,我想合并一些具有相同结构的数组。 这是我的数组的构造函数:
$first = array();
$first['hotel'] = array();
$first['room'] = array();
$first['amenities'] = array();
/*
Insert data into $first array
*/
$second = array();
$second['hotel'] = array();
$second['room'] = array();
$second['amenities'] = array();
/*
Insert data into $second array
*/
插入数据后,我想合并这个数组,但问题是我在其中有子数组,我想创建一个像这样的唯一数组:
$total = array();
$total['hotel'] = array();
$total['room'] = array();
$total['amenities'] = array();
这是尝试合并:
$total = array_merge((array)$first, (array)$second);
在这个数组中我只有$ second数组为什么?
答案 0 :(得分:1)
使用名为array_merge_recursive
的递归版array_merge
。
答案 1 :(得分:0)
没有标准的方法,你只需要做一些事情:
<?php
$first = array();
$first['hotel'] = array('hello');
$first['room'] = array();
$first['amenities'] = array();
/*
Insert data into $first array
*/
$second = array();
$second['hotel'] = array('world');
$second['room'] = array();
$second['amenities'] = array();
$merged = array();
foreach( $first as $key => $value )
{
$merged[$key] = array_merge( $value, $second[$key] );
}
print_r( $merged );
答案 2 :(得分:0)
似乎array_merge没有按照你的想法做到:“如果输入数组具有相同的字符串键,那么该键的后一个值将覆盖前一个键。”试试这个:
function merge_subarrays ($first, $second)
$result = array();
foreach (array_keys($first) as $key) {
$result[$key] = array_merge($first[$key], $second[$key]);
};
return $result;
};
然后将其称为:
$total = merge_subarrays($first, $second);
并且,如果我正确理解了您的问题,$total
将包含您正在寻找的结果。