Обход всех значений массива массивов - PullRequest
0 голосов
/ 05 ноября 2010

N в этом вопросе означает любое произвольное число любого размера и не обязательно (но может быть) одинаковым. У меня есть массив с N количество пар ключ => значение. Эти пары ключ => значение могут также содержать другой массив размером N с N числом пар ключ => значение. Этот массив может иметь глубину N, что означает, что любая пара ключ => значение в массиве может отображаться в другой массив. Как получить все значения этого массива (сохранить их в новом одномерном массиве), игнорируя ключ => пары значений?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

Массив-рекурсивный массив

Роб в сети Юрковского 26 октября 2010 г.не особо заботятся о ключах массива, вы можете захватить все значения довольно просто:

$sample = array(
    'dog' => 'woof',
    'cat' => array(
        'angry' => 'hiss',
        'happy' => 'purr'
    ),
    'aardvark' => 'kssksskss'
);

$output = array();

// Push all $val onto $output. 
array_walk_recursive($sample, create_function('$val, $key, $obj', 'array_push($obj, $val);'), &$output);
// Printing echo nl2br(print_r($output, true));

/*
 * Array
 * (
 *  [0] => woof
 *  [1] => hiss
 *  [2] => purr
 *  [3] => kssksskss
 * )
 */
1 голос
/ 05 ноября 2010

Вы можете сделать smt следующим образом:

$output = array();

function genArray( $arr ) {
    global $output;
    foreach( $arr as $key => $val ) {
        if( is_array($val) ) 
            genArray( $val );
        else
            output[$key] = $val;
    }
}

genArray( $myArray );

Вместо рекурсии, используя глобальную переменную и функцию, это можно сделать с помощью циклов, но это всего лишь общая идея, и, вероятно, нужно немногоВаше внимание, в любом случае.Это должно быть хорошо:)

0 голосов
/ 05 ноября 2010

Существует множество решений в комментариях к массиву php doc.

http://www.php.net/manual/en/function.array-values.php

...