0

我有一个用 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 数组,为什么?

4

3 回答 3

1

使用被调用的递归array_merge版本array_merge_recursive

于 2013-07-18T15:54:39.237 回答
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 );
于 2013-07-18T15:50:12.790 回答
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将包含您正在寻找的结果。

于 2013-07-18T15:50:31.083 回答