2011-09-02 5 views
0
$thisQuestion = array_filter($pollQuestions,function($q) use ($questDataArr){ 
         return $questDataArr[0] == $q["id"]; 
        }); 

Comme j'utilise 2 variables ici, j'utilisais cette fonction inline. Comment puis-je créer une fonction de rappel et passer un paramètre supplémentaire?array_filter avec une fonction de rappel

+1

Vous passez des paramètres supplémentaires avec use(), comme vous l'avez fait. Cela aiderait si vous nous montriez à quoi ressemblaient ces types de données. – Galen

Répondre

2

Si je comprends bien votre question:

  • vous ne voulez pas utiliser une fonction anonyme
  • vous avez besoin d'une fonction qui maintient un état avec elle

La solution est de créer une classe:

class MyCallback { 
    private $questDataArr; 
    public function __construct($questDataArr) { 
     $this->questDataArr = $questDataArr; 
    } 
    function callback($q) { 
     return $this->questDataArr[0] == $q["id"]; 
    } 
} 

array_filter($pollQuestions, array(new MyCallback($questDataArr), 'callback'));