7

我以前从未使用过 array_filter 函数,所以不管我使用什么作为函数名,它都会给我一个错误

Warning: array_filter() expects parameter 2 to be a valid callback, function 'odd' not found or invalid function name in

我什至采取了直接从 php 手册页复制粘贴示例的步骤,它给了我同样的错误。代码:

function odd($var) {
    // returns whether the input integer is odd
    return($var & 1);
 }

function calculate($res, $period, $elements, $per, $total, $brand = false) {

    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    $array2 = array(6, 7, 8, 9, 10, 11, 12);

    echo "Odd :\n";
    print_r(array_filter($array1, "odd"));
}

我真的不知道该去哪里。通常,当我遇到问题时,我可以从 php 手册页中复制并粘贴代码,然后从那里返回,但如果他们的示例甚至不起作用,那就很难了。

4

2 回答 2

11

我认为在你的情况下,函数奇数不是一个独立的函数,而是你的类的方法。在这种情况下,你应该写

print_r(array_filter($array1, array($this,"odd")));

从你的班级运行奇怪的方法

于 2014-05-10T14:02:59.683 回答
0

如果您的类是相同的并且您以递归方式调用方法,那么 PHP 不知道该方法是否属于每个类,这就是 $this在数组中使用的原因:

array_filter($array1, array($this,"recursive"))

    public function customArrayFilter($logDate, $uid, $date)
    {
        $logDates = array($logDate);
        $result = array_filter($logDates, array($this, "recursive"));
        var_dump($result);
    }

    public function recursive($data)
    {
        return $data;
    }

   $this->customArrayFilter($data, 1, '2019-02-23');
于 2019-02-23T07:28:28.803 回答