PHP объединить два массива - PullRequest
9 голосов
/ 19 декабря 2011

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

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

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 ]

14 голосов
/ 19 декабря 2011

Попробуйте array_merge:

$result = array_merge($array1, $array2);
3 голосов
/ 23 августа 2013

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

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

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

3 голосов
/ 19 декабря 2011

ИСПРАВЛЕНО (снова)

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: Улучшенная читаемость и эффективность

1 голос
/ 19 декабря 2011

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

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;
}
0 голосов
/ 10 февраля 2013

Вы также можете использовать: 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 .

0 голосов
/ 19 декабря 2011

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

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

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