Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP递归函数,返回错误_Php_Arrays_Return - Fatal编程技术网

PHP递归函数,返回错误

PHP递归函数,返回错误,php,arrays,return,Php,Arrays,Return,我创建了一个PHP函数来测试$var是否存在并且不是空的 但是,我有一个我无法识别的问题: 在我的foreach中,return false被忽略,因为另一个“return”首先返回。 看: function notEmpty($var, $r=false){ if(gettype($var)=='string' OR gettype($var)=='integer'){ if($r==false){ if(isset($var) AND

我创建了一个PHP函数来测试$var是否存在并且不是空的

但是,我有一个我无法识别的问题:

在我的foreach中,return false被忽略,因为另一个“return”首先返回。 看:

    function notEmpty($var, $r=false){
    if(gettype($var)=='string' OR gettype($var)=='integer'){
        if($r==false){
            if(isset($var) AND @!empty($var)){
                return true;
            }else{return false;}
        }else{
            if(!isset($var) AND @empty($var)){
                return false;
            }
        }
    }elseif(gettype($var)=='array'){
        foreach($var as $val){
            if(gettype($val)=='array'){
                notEmpty($val, true);
            }else{
                if(empty($val) OR $val==''){echo "string";
                    return false;
                }
            }
        }
        return true;
    }else{return null;}
}
我调用我的函数如下:
-notEmptyarray$val1、$val2、$val3

我想这或多或少就是你想要的:

<?php

function notEmpty($array, $recursive=false) {
    $empty = array_filter($array, function($element) use ($recursive) {
        if (is_array($element) && $recursive) {
            return !notEmpty($element);
        } else {
            return empty($element);
        }
    });
    return 0===count($empty);
}

var_dump(notEmpty([1, 2, 3]));
var_dump(notEmpty(['foo', '', 'bar']));
var_dump(notEmpty(['foo', null, 'bar']));
var_dump(notEmpty(['foo', [1,2,3], 'bar']));
var_dump(notEmpty(['foo', [1,null,3], 'bar']));
var_dump(notEmpty(['foo', [1,null,3], 'bar'], true));

在该代码中,$r表示什么?你最好为你的变量使用自我解释的名称。看看你需要对notEmpty的内部调用的返回值做出什么反应。当前您完全忽略它。您的ifempty$val或$val==条件为redundant@alpadev这里的一切都是多余的
bool(true)
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)