2015-04-23 1 views
-2

Mon code:Comment passer usort() un paramètre?

function sortx($a, $b) { 
    if(!strpos($a["p_title"],'apple ipad')) { 
     return -1; 
    } 
    return 1; 
} 
usort($arr, 'sortx');` 

En fonction ci-dessus que je veux transmettre: $sort_text='apple ipad'; , lorsque la fonction d'appel au lieu de hardcoding apple ipad dans strpos(). Comment puis-je accomplir cela?

+0

Note: vous utilisez paobably 'strpos (...)' tort. Cela vaut true si la chaîne ne contient pas "apple ipad" ou commence par "apple ipad" –

+0

duplication possible de [Transférer des paramètres supplémentaires au rappel d'usort] (http://stackoverflow.com/questions/8230538/pass-extra-parameters -to-usort-callback) –

+0

@ Rizier123, ce n'est pas en double, car ici je veux passer la fonction entière à l'intérieur de la fonction usort(), s'il vous plaît le retirer de la catégorie en double. –

Répondre

3

appel avec une fermeture:

$sort_text='apple ipad'; 
usort(
    $arr, 
    function ($a, $b) use ($sort_text) { 
     if(!strpos($a["p_title"], $sort_text)) { 
      return -1; 
     } 
     return 1; 
    } 
); 

et vous pouvez transmettre des arguments supplémentaires à la clause use

+0

il est possible erreur de syntaxe dans netbeans. –

+0

et 'erreur de syntaxe, inattendu 'sortx' (T_STRING)' –

+1

Mon mauvais .... supprimer le nom de la fonction .... il utilise une fonction anonyme, donc il n'a pas de nom ... ça va enseigner moi de couper/coller de la question .... réponse éditée en conséquence –