7 votes

php array_filter fonction non trouvée ou nom de fonction invalide quel que soit ce que je saisis

Je n'ai jamais utilisé la fonction array_filter auparavant, alors j'ai essayé, mais quel que soit le nom de la fonction que j'utilise, je reçois l'erreur suivante

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

J'ai même pris la peine de copier-coller l'exemple directement à partir de la page du manuel php et cela me donne la même erreur. Code :

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"));
}

Je ne sais vraiment pas où aller. En général, quand j'ai un problème, je peux copier et coller le code exact de la page du manuel php et travailler à partir de là, mais si leur exemple ne fonctionne même pas, c'est difficile.

11voto

Marcin Nabiałek Points 13843

Je pense que dans votre cas, la fonction odd n'est pas une fonction autonome mais une méthode de votre classe. Dans ce cas, vous devriez écrire

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

pour exécuter une méthode bizarre de votre classe

0voto

Si votre classe est la même et que vous appelez une méthode de manière récursive, alors la méthode PHP ne sait pas si la méthode appartient à chaque classe ou non, c'est pourquoi l'utilisation de $this dans un tableau :

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');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X