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_mergecalledの再帰バージョンを使用し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 に答える