遍历数组数组的所有值
此问题中的N表示任意大小的任意数字,并不一定(但可以)相同。我有一个具有N个键=>值对的数组。这些键=>值对还可以包含另一个大小为N的数组,其中N个键=>值对。这个数组可以有N个深度,这意味着数组中的任何key =>值对都可以映射到另一个数组。如何获得该数组的所有值(将它们存储在一个新的1维数组中),忽略键键=>值对?遍历数组数组的所有值
抢在yurkowski点网 10月26日 - 2010 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);
相反递归的,使用全局变量和函数,它可以通过循环来完成,但是这只是一个一般的想法,大概需要一点点你的注意,反正。这应该是件好事:)
使用旧版本的PHP,这是最好的解决方案。我会删除全局变量,只是在函数中返回它。 – bmarti44 2010-11-05 14:52:30
@ bmarti44:返回一个数组?或数组元素? – hummingBird 2010-11-05 15:00:29
啊,我看你在这种情况下不能退货。这将返回一个数组元素,你是正确的。 – bmarti44 2010-11-05 15:16:46
虽然这似乎是最好的答案,我唯一的疑虑是,这个功能只能由PHP> = 5.3的支持。但是,这仍然是最好的办法。 – bmarti44 2010-11-05 14:50:33
编辑到我以前的评论,内联PHP和函数只支持PHP> = 5.3。如果此函数仅使用对函数的引用,则它将在较早版本的PHP中起作用。 – bmarti44 2010-11-05 15:42:00