Php empty()不是有效的回调?
我试图在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" )
$ 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我们不允许这样做。这是唯一的原因;)