вставить элемент в каждый массив в многомерном массиве в php? - PullRequest
2 голосов
/ 06 декабря 2010

Вот мой массив

$myArr  = array(array('one', 'two'), array('one', 'two'));

Я бы хотел добавить элемент в каждый массив внутри $ myArr . Я не хочу перебирать каждый массив внутри и добавлять этот элемент. Есть ли более быстрый способ добиться этого, используя array_map или array_walk .. предпочтительно с одной строкой кода ?

Массив результатов должен быть похож на

$myArr  = array(array('one', 'two','three'), array('one', 'two','three'));

Спасибо большое

Понял, Слава @ strager

$myvar = 'Three';

$myArr = array_map(function ($subarray) {  global $myvar; $subarray[] = $myvar;   return $subarray;}, $myArr);

Ответы [ 2 ]

3 голосов
/ 06 декабря 2010

вы можете использовать функцию array_push () для отправки массива в массив

int array_push ( array &$array , mixed $var [, mixed $... ] );

Это может помочь вам в качестве ваших требований.

спасибо.

2 голосов
/ 06 декабря 2010

С array_walk:

array_walk($myArr, create_function('&$subarray', '$subarray[] = "three";'));

С array_map:

$myArr = array_map(create_function('$subarray', '$subarray[] = "three"; return $subarray;'), $myArr);

С анонимными функциями array_map (не проверено; у меня нет доступа к PHP5.3):

$myArr = array_map(function ($subarray) {
    $subarray[] = "three";
    return $subarray;
}, $myArr);

Или, конечно, лучшее решение (для PHP <5.3): </p>

function pushToEndOfSubarrays($array, $item) {
    $ret = array();

    foreach ($array as $key => $subarray) {
        $subarray[] = $item;
        $ret[$key] = $subarray;
    }

    return $ret;
}

$myArr = pushToEndOfSubarrays($myArr, 'three');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...