Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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 empty()不是有效的回调?_Php_Callback_Array Map - Fatal编程技术网

Php empty()不是有效的回调?

Php empty()不是有效的回调?,php,callback,array-map,Php,Callback,Array Map,我试图在php中的数组映射中使用empty()。我得到的错误是它不是一个有效的回调 $ cat test.php <? $arrays = array( 'arrEmpty' => array( '','','' ), ); foreach ( $arrays as $key => $array ) { echo $key . "\n"; echo array_reduce( $array, "empty" )

我试图在php中的数组映射中使用empty()。我得到的错误是它不是一个有效的回调

$ cat test.php
<?

$arrays = array(
   'arrEmpty' => array(
        '','',''
    ),
);

foreach ( $arrays as $key => $array ) {

        echo $key . "\n";
        echo array_reduce( $array, "empty" );
        var_dump( array_map("empty", $array) );
        echo "\n\n";

}
这不管用吗


长话短说:我试图变得(太?)聪明,并检查所有数组值是否都是空字符串

这是因为
empty
是一种语言结构,而不是函数。从

注意:因为这是一个语言构造而不是函数,所以不能使用变量函数调用它


Empty不能用作回调,它需要对变量进行操作。从:

注意:empty()只检查变量,因为其他任何操作都会导致分析错误。换句话说,以下操作将不起作用:empty(trim($name))

请尝试不回调:

如果未提供回调,则将删除所有等于FALSE的输入项(请参见转换为布尔值)

然后可以使用
count(array\u filter($array))
查看它是否仍然有值

或者简单地将empty包装成callable,如下所示:

array_reduce($array, create_function('$x', 'return empty($x);'));
function isEmpty($var)
{
    return empty($var);
}
或者从PHP5.3开始

array_reduce($array, function($x) { return empty($x); });

要添加到其他函数中,PHP开发人员通常会创建如下函数:

array_reduce($array, create_function('$x', 'return empty($x);'));
function isEmpty($var)
{
    return empty($var);
}

我不知道为什么,在回调中,empty()为我工作

我最初出现此错误的原因是因为我试图作为独立函数回调,而它在我的类中,我必须使用数组(&$this,'func_name')调用它

请参阅下面的代码。它对我有用。我是PHP5.2.8,如果这很重要的话

$table_values = array_filter( $table_values, array(&$this, 'remove_blank_rows') );

function remove_blank_rows($row){


        $not_blank = false;

        foreach($row as $col){
            $cell_value = trim($col);
            if(!empty( $cell_value )) {
                $not_blank = true;
                break;
            }
        }

        return $not_blank;

}

你知道我喜欢这个网站的什么吗?人们不会说“RTFM!”:D@user151841我们不允许这样做。这是唯一的原因;)