thinkphp5 中使用array_filter函数

thinkphp5 中使用array_filter函数,第二个参数出错,请教大神要怎样修改。谢谢

<?php  
namespace app\controller;  
class Abs
{
    public function index(){
        function abc($value){
            if($value!==''){
                return true;
            }else{
                return false;
            }
        }

        $data = [
            'a'=>1,
            'b'=>0,
            'c'=>true,
            'd'=>false,
            'e'=>0,
            'f'=>'',
            'd'=>null
        ];
    
        return array_filter($data,'abc');
    }
}

报错:
array_filter() expects parameter 2 to be a valid callback, function 'abc' not found or invalid function name

阅读 3.2k
4 个回答

和 namespace 有关,指定下namespace就可以了。

return array_filter($data,'\app\controller\abc');

你完全可以这样写

public function index(){
        

        $data = [
            'a'=>1,
            'b'=>0,
            'c'=>true,
            'd'=>false,
            'e'=>0,
            'f'=>'',
            'd'=>null
        ];
    
        return array_filter($data,function($value){
            if($value!==''){
                return true;
            }else{
                return false;
            }
        });
    }

具体报错信息是什么?

第二个参数要求是一个回调函数,abc没有这个函数
function abc()
{
return true;
};

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题