1

私は2つの配列を持っています

$array1 = array(
    ['2013-05-01']=>'test',
    ['2013-05-02']=>'testing',
    ['2013-05-03']=>'working',
    ['2013-05-04']=>'future test');

$array2 = array(
    ['2013-05-01']=>'1',
    ['2013-05-02']=>'done',
    ['2013-05-03']=>'code',
    ['2013-05-05']=>'release');

これらの配列を結合したいので、出力は

$result = array(
        ['2013-05-01']=>'test 1', 
        ['2013-05-02']=>'testing 2',
        ['2013-05-03']=>'working code',
        ['2013-05-04']=>'future test',
        ['2013-05-05']=>'release')

$result = $array1 + array2; を試しました。array_merge() 、 array_combine() none は正しい結果をもたらしました。

助けてください。

4

5 に答える 5

6

この問題の1行の解決策は次のとおりです。

$array1 = array(
    '2013-05-01'=>'test',
    '2013-05-02'=>'testing',
    '2013-05-03'=>'working',
    '2013-05-04'=>'future test');

$array2 = array(
    '2013-05-01'=>'1',
    '2013-05-02'=>'done',
    '2013-05-03'=>'code',
    '2013-05-05'=>'release');


$r = array_map(function($i) {
    return !is_array($i) ? $i : implode(' ', $i);
}, array_merge_recursive($array1, $array2));

var_dump($r);

オンライン デモ: http://ideone.com/wmbple

于 2013-05-22T02:16:38.837 に答える
1

使用できますarray_walk()

$result = $array1;
array_walk($result, function(&$value, $key) use (&$array2) {
    $value .= ' ' . $array2[$key];
});

デモ

これは、配列キーに基づいて検索された値を使用してインプレースで変更$result(からコピー) します。$array1$array2

于 2013-05-22T02:19:40.177 に答える
0

そのための関数を作成し、ツールキットに保持することをお勧めします。

function merge_array() {
    $merged = array();
    $arrays = func_get_args();

    if ($arrays) {
        foreach ($arrays as $array) {
            foreach ($array as $key => $value) {
                if (isset($merged[$key])) {
                    $merged[$key] .= ' ' . $value;
                }
                else {
                    $merged[$key] = $value;
                }
            }
        }
    }

    return $merged;
}

$array1次に、$array2それに渡します。

$result = merge_array($array1, $array2);

そして、次の結果が得られます。

// Array
// (
//     [2013-05-01] => test 1
//     [2013-05-02] => testing done
//     [2013-05-03] => working code
//     [2013-05-04] => future test
//     [2013-05-05] => release
// )

この関数は、必要に応じて 3 つ以上の配列を受け入れることに注意してください

  • [!]ideoneでオンラインで確認してください。
于 2013-05-22T02:23:21.570 に答える
0

array_walk() が最も簡単な方法です。

于 2013-05-22T02:33:19.933 に答える