0

重複の可能性:
古いキーを上書きせずに 2 つの配列を数値キーで結合する

わかりました、運が悪いのでこれについて検索していました-それは常に、私の目的には役に立たないまたはarray_merge機能のみを指しています。array_pusharray_combine

以下に 2 つの配列を示します (番号はインデックス付き)。

Array (
    [0] => 12345
    [1] => "asdvsdfsasdfsdf"
    [2] => "sdgvsdfgsdfbsdf"
)
Array (
    [0] => 25485
    [1] => "tyjfhgdfsasdfsdf"
    [2] => "mojsbnvgsdfbsdf"
)

そして、「結合された」(結合された) 配列を 1 つ作成する必要があるため、次のようになります。

Array (
    [0] => 12345
    [1] => "asdvsdfsasdfsdf"
    [2] => "sdgvsdfgsdfbsdf"
    [3] => 25485
    [4] => "tyjfhgdfsasdfsdf"
    [5] => "mojsbnvgsdfbsdf"
)

この問題について何も見つからなかったので、自分で試しました ($arr1 と $arr2 は 2 つの小さな配列です)。

$result_array = $arr1;
foreach($arr2 as $v) {
    $result_array[] = $v;
}

もちろん、これはうまく機能していますが、私はこのアプローチが好きではありません.2番目の配列に3つの要素しかない状況を想像してみてください...

質問:より良いアプローチがありますか、それともせいぜいいくつかの組み込み関数(私は知りません)ですか???

4

2 に答える 2

5

array_merge数字キーを使用しているため、問題なく動作します...ドキュメントの以下の説明を参照してください

入力配列に同じ文字列キーがある場合、そのキーの後の値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きせずに追加されます。

強調鉱山

于 2012-06-11T09:15:41.300 に答える
1

配列のマージは、数値的にインデックス付けされた配列に対して正常に機能します。

<?php

$arrayOne = array(
     0 => 12345
    ,1 => "asdvsdfsasdfsdf"
    ,2 => "sdgvsdfgsdfbsdf"
);
$arrayTwo =  array(
     0 => 25485
    ,1 => "tyjfhgdfsasdfsdf"
    ,2 => "mojsbnvgsdfbsdf"
);


$arrayMerged = array_merge($arrayOne, $arrayTwo);

print_r($arrayMerged);

?>

出力:

Array
(
    [0] => 12345
    [1] => asdvsdfsasdfsdf
    [2] => sdgvsdfgsdfbsdf
    [3] => 25485
    [4] => tyjfhgdfsasdfsdf
    [5] => mojsbnvgsdfbsdf
)
于 2012-06-11T09:19:25.187 に答える