empty() 不是一个有效的回调?
我正在尝试在 php.ini 的数组映射中使用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";
}
$ php test.php
arrEmpty
Warning: array_reduce(): The second argument, 'empty', should be a valid callback in /var/www/authentication_class/test.php on line 12
Warning: array_map(): The first argument, 'empty', should be either NULL or a valid callback in /var/www/authentication_class/test.php on line 13
NULL
这不应该起作用吗?
长话短说:我试图变得(太?)聪明并检查所有数组值都不是空字符串。
I'm trying to use empty() in array mapping in php. I'm getting errors that it's not a valid callback.
$ 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";
}
$ php test.php
arrEmpty
Warning: array_reduce(): The second argument, 'empty', should be a valid callback in /var/www/authentication_class/test.php on line 12
Warning: array_map(): The first argument, 'empty', should be either NULL or a valid callback in /var/www/authentication_class/test.php on line 13
NULL
Shouldn't this work?
Long story: I'm trying to be (too?) clever and checking that all array values are not empty strings.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(5)
删除→记忆2024-09-04 04:13:14
尝试 array_filter
不带回调反而:
如果未提供回调,则所有等于 FALSE 的输入条目(请参阅转换为布尔值)将被删除。
然后,您可以使用 count(array_filter($array)) 来查看它是否仍然有值。
或者简单地将空包装到可调用中,如下所示:
array_reduce($array, create_function('$x', 'return empty($x);'));
或从 PHP 5.3 开始
array_reduce($array, function($x) { return empty($x); });
淡淡绿茶香2024-09-04 04:13:14
我不知道为什么,不知何故,empty() 在回调中为我工作。
我最初收到此错误的原因是因为我试图作为独立函数进行回调,而它在我的类中,我必须使用 array(&$this ,'func_name') 来调用它,
请参阅下面的代码。这对我有用。我是 php 5.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;
}
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这是因为
empty
是一种语言构造,而不是一个函数。来自 empty() 手册:It's because
empty
is a language construct and not a function. From the manual on empty():