例如,给定的数组是
$data = array(1, ‘alpha’, 4, array(‘gamma’, 6, 8, array(7,9,11,90), 22, 60), 14, 51, ‘beta’);
预期结果是
array(4, array(6, 8, array(90), 22, 60), 14)
我尝试了这段代码
function getEvenValues($array, $holder = array()) {
foreach ($array as $value) {
if (gettype($value) == 'array') {
getEvenValues($value);
}
else if(gettype($value) == 'integer'){
if($value % 2 == 0){
array_push($holder, $value);
}
}
}
return $holder;
}
print_r(getEvenValues($data));
但是没有得到预期的结果
答案 0 :(得分:2)
请检查以下代码:
function getEvenValues($array, $holder = array()) {
foreach ($array as $value) {
if (is_array($value)) {
array_push($holder,getEvenValues($value));
}
else if(gettype($value) == 'integer'){
if($value % 2 == 0){
array_push($holder, $value);
}
}
}
return $holder;
}
我会为您提供预期的结果。
答案 1 :(得分:0)
function findEvens ($arr) {
$res = [];
foreach($arr as $k => $v) {
if (gettype($v) == 'integer') {
if ($v % 2 == 0) $res[] = $v;
} else if (is_array($v)) {
$res[] = findEvens($v);
}
}
return $res;
}