Php 在给定数组中查找偶数

Php 在给定数组中查找偶数,php,arrays,Php,Arrays,例如,给定的数组是 $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) {

例如,给定的数组是

$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));

但未得到预期结果

请检查以下代码:

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;
}

我将向您提供预期结果。

请检查以下代码:

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;
}
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;
}

我将向您提供预期结果。

结果是什么。为了避免我们不得不复制/粘贴代码并为自己运行它,实际上您需要查找递归。看几个例子,看看YOU做错了什么。预期的结果是什么?预期的结果是数组(4,数组(6,8,数组(90),22,60),14)结果是什么。为了避免我们不得不复制/粘贴代码并为自己运行它,实际上您需要查找递归。看几个例子,看看YOU做错了什么。预期的结果是什么?预期的结果是数组(4,数组(6,8,数组(90),22,60),14)
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;
}