合并复杂的数组php

时间:2013-07-18 15:43:05

标签: php array-merge

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

3 个答案:

答案 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将包含您正在寻找的结果。