2015-04-23 9 views
-2

Мой код:Как передать параметр usort()?

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

В приведенной выше функции я хочу передать: $sort_text='apple ipad'; , при вызове функции вместо жесткого кодирования apple ipad в strpos(). Как я могу это сделать?

+0

Примечание: вы paobably с помощью 'StrPos (...)' неправильно. Это оценивается как true, если строка не содержит «apple ipad» или начинается с «apple ipad» –

+0

Возможный дубликат [Передача дополнительных параметров для обратного вызова usort] (http://stackoverflow.com/questions/8230538/pass-extra-parameters -to-usort-callback) –

+0

@ Rizier123, это не дубликат, потому что здесь я хочу передать целую функцию внутри функции usort(), удалите ее из дублированной категории. –

ответ

3

Вызов его с закрытием:

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

и вы можете передать дополнительные аргументы с use п

+0

, он дает возможную синтаксическую ошибку в netbeans. –

+0

и 'синтаксическая ошибка, неожиданный 'sortx' (T_STRING)' –

+1

Мой плохой .... удалить имя функции .... он использует анонимную функцию, поэтому у нее нет имени ..., которое научит меня отрезать/вставить из вопроса .... ответить отредактировано соответственно –