5

重複の可能性:
PHP: 2 つの多次元配列をマージする

これらの配列があり、それらを 1 つの配列にマージしたいと考えています。

$arrayAAA[0]['name'] = "stackoverflow";
$arrayBBB[0]['color'] = "white";
$arrayCCC[0]['media'] = "web";

これらをこのようにマージしたいと思います。

$newArray[0]['name'] //"stackoverflow"
$newArray[0]['color'] //"white"
$newArray[0]['media'] //"web"

誰かがこれを行う方法を知っている場合は、助けてください。を使えばマージできると思ったのですがarray_merge()、私の場合はこの機能がうまくいきません。

よろしくお願いします!

4

4 に答える 4

6

手動で解決策を書くことができたのに、解決策を見つけるのにどれだけの時間を無駄にしたかわかりません。

foreach(array($arrayAAA, $arrayBBB, $arrayCCC) as $v){
    foreach($v as $iv){
        $result[key($iv)] = $iv[key($iv)];
    }
}

CodePad

于 2012-12-19T01:19:02.663 に答える
4

array_merge()ではなく、を使用したいと思いますmerge_array()

于 2012-12-19T00:56:30.280 に答える
3

それで、これもうまくいきませんか?

$x = array();
$x[0] = array_merge($arrayA[0], $arrayB[0], ...);

array_merge_recursive関数もあります。しかし、各サブ配列のみを追加すると確信しています。

于 2012-12-19T01:15:32.137 に答える
2

より複雑なアレイの場合、これは機能するはずですが、もっと簡単な方法があるはずです。

$arrayAAA[0]['name'] = "stackoverflow";
$arrayBBB[0]['color'] = "white";
$arrayCCC[0]['media'] = "web";

function merge_arrays(){
    $aArgs = func_get_args();

    $aReturn = array();
    if($aArgs != array()){
        foreach($aArgs as $aArr){
            foreach($aArr as $mKey => $aSub){
                if(!isset($aReturn[$mKey])){
                    $aReturn[$mKey] = array();
                }

                foreach($aSub as $mSubKey => $mVal){
                    $aReturn[$mKey][$mSubKey] = $mVal;
                }
            }
        }   
    }

    return $aReturn;
}

$newArray = merge_arrays($arrayAAA, $arrayBBB, $arrayCCC);
于 2012-12-19T01:23:29.960 に答える