php объединить два массива

у меня есть два массива, я хочу объединить эти два массива в один массив. Пожалуйста, просмотрите подробную информацию ниже:

Первый Массив:

Array
(
    [0] => Array
        (
            [a] => 1
            [b] => 2
            [c] => 3
        )

    [1] => Array
        (
            [a] => 3
            [b] => 2
            [c] => 1
        )
)

Второй Массив:

Array
(
    [0] => Array
        (
            [d] => 4
            [e] => 5
            [f] => 6
        )

    [1] => Array
        (
            [d] => 6
            [e] => 5
            [f] => 4
        )
)

Я хочу, чтобы этот результат. Кто-нибудь знает, как это сделать?

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 3
            [1] => 2
            [2] => 1
        )
    [2] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [3] => Array
        (
            [0] => 6
            [1] => 5
            [2] => 4
        )
)

надеюсь, вы поняли вопрос. Заранее спасибо.

6 ответов


основные (снова)

function array_merge_to_indexed () {
    $result = array();

    foreach (func_get_args() as $arg) {
        foreach ($arg as $innerArr) {
            $result[] = array_values($innerArr);
        }
    }

    return $result;
}

принимает неограниченное количество входных массивов, объединяет все вложенные массивы в один контейнер как индексированные массивы и возвращает результат.

изменить 03/2014: улучшенная читаемость и эффективность


попробовать array_merge:

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

более простой и современный способ-это:

$merged = $array1 + ['apple' => 10, 'orange' => 20] + ['cherry' => 12, 'grape' => 32];

новый массив синтаксис php 5.4


Если вы хотите вернуть точный результат, который вы указали в своем вопросе, то что-то вроде этого будет работать

function array_merge_no_keys() {
    $result = array();
    $arrays = func_get_args();
    foreach( $arrays as $array ) {
        if( is_array( $array ) ) {
            foreach( $array as $subArray ) {
                $result[] = array_values( $subArray );
            }
        }
    }
    return $result;
}

array_merge не работает:

$a = array(array(1,2,3), array(3,2,1));
$b = array(array(4,5,6), array(6,5,4));
var_dump(array_merge($a, $b));

попробуйте:http://codepad.org/Bf5VpZOr

точно желаемый результат.


вы также можете использовать : функция array_merge_recursive ; для многомерных массивов.

<?php
    $ar1 = array("color" => array("favorite" => "red"), 5);
    $ar2 = array(10, "color" => array("favorite" => "green", "blue"));
    $result = array_merge_recursive($ar1, $ar2);
    print_r($result);
?>

результат :

Array(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

источник : руководство по PHP .