2

同じ構造を持つ2つの別々の多次元配列があります。例:

Array
(
    [0] => Array
        (
            [uploadData] => 1234 Main St
        )

    [1] => Array
        (
            [uploadData] => 5678 Elm St
        )

    [2] => Array
        (
            [uploadData] => 9879 New St
        )

    [3] => Array
        (
            [uploadData] => 9876 Shady Lane
        )

)

Array
(
    [0] => Array
        (
            [uploadData] => Orlando
        )

    [1] => Array
        (
            [uploadData] => Tampa
        )

    [2] => Array
        (
            [uploadData] => Miami
        )

    [3] => Array
        (
            [uploadData] => West Palm Beach
        )

)

私はそれらを次のような1つの新しい配列に入れる必要があります:

Array
(
    [0] => Array
        (
            [uploadData] => 1234 Main St Orlando
        )

    [1] => Array
        (
            [uploadData] => 5678 Elm St Tampa
        )

    [2] => Array
        (
            [uploadData] => 9879 New St Miami
        )

    [3] => Array
        (
            [uploadData] => 9876 Shady Lane West Palm Beach
        )

)

使ってみましたが、動かarray_mergeせません。

4

3 に答える 3

3

シンプルで再帰的なキーに依存しないソリューション:

function array_concat_recursive($array1, $array2){
    $result = array();
    foreach($array1 as $key => $value){
        if(isset($array2[$key])){
            if(is_array($value)){
                $result[$key] = array_concat_recursive($value, $array2[$key]);
            }else{
                $result[$key] = $value . ' ' . $array2[$key];
            }
        }
    }
    return $result;
}
于 2012-12-20T23:36:24.050 に答える
2

仮定して:

  1. 最初の配列は、という変数に割り当てられます$address
  2. 2番目の配列は、という変数に割り当てられます$city
  3. 2つのアレイの間には常に完全一致があります

編集:
@dev-null-dwellerによる素晴らしいキャッチ-配列の完全な深さをキャッチするように編集されました。


問題のサンプルコードにはuploadDataキーの前後に引用符がないため、ここに複製されます。

以下はあなたが望むことをします:

foreach($address as $key=>$value) {
    $newarray = array(
         'uploadData'=>$value['uploadData'] . ' ' . $city[$key]['uploadData'];
    );
}

には$newarray、リクエストごとに構造化された配列が含まれます。

于 2012-12-20T23:09:39.127 に答える
1

すべてがなくなるまで、両方の配列からフェッチします。

$final = [];
$key   = 'uploadData';
while ($array1 && $array2)
{
    $final[][$key] = array_shift($array1)[$key] . ' ' . array_shift($array2)[$key];
}

ブール値への変換を参照array_shiftしてください。

于 2012-12-20T23:14:51.850 に答える