在给定数组中找到偶数

时间:2018-07-05 13:11:25

标签: 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) {
        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));

但是没有得到预期的结果

2 个答案:

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