N表示任何大小的任意数字,并且不一定(但可能)相同。我有一个包含 N 个键 => 值对的数组。这些 key => value 对还可以包含另一个大小为 N 的数组,其中包含 N 个 key => value 对。该数组的深度可以是 N,这意味着数组中的任何键 => 值对都可以映射到另一个数组。
如何获取该数组的所有值(将它们存储在新的一维数组中),忽略 key => value 对中的键?
在 yurkowski 点网抢劫 2010 年 10 月 26 日 06:16
如果你真的不特别 关心数组的键,你 可以非常简单地捕获所有值:
$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
* )
*/
你可以像这样做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 );
使用全局变量和函数代替递归,可以通过循环来完成,但这只是一个一般想法,无论如何,可能需要你的一些注意。这应该是一件好事:)