2015-04-17 1 views
1

Это мой массив:многомерные фильтр массив похож на MySQL LIKE

$database[0] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 
$database[1] = array("country"=>"USA", "product" => "pen123", "company" => "hi789"); 
$database[2] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 
$database[3] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 
$database[4] = array("country"=>"UK", "product" => "pen4023", "company" => "hi7789"); 

Выходной массив, который я хочу получить: «Страна» = «UK» и «компания» LIKE «ХТ%»

Таким образом, вывод будет:

$database[0] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 
$database[2] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 
$database[3] = array("country"=>"UK", "product" => "pen423", "company" => "ht789"); 

Возможно ли это как заявление sql и без использования цикла?

+0

Вы пробовали что-нибудь? – Rizier123

+0

Да, я пробовал, но не работал. – user1712287

+1

^Неважно. Просто включите свою попытку в свой вопрос и продемонстрируйте свои усилия и работу, которые вы сделали – Rizier123

ответ

2

использование array_filter

function filterfunction($value) 
{ 

    if(strcmp($value['country'],"UK")!=0 
     return false; 
    if(strcmp(substr($value['company'],0,2),"ht")==0) 
     return true; 
    return false; 
} 

$filterarr = array_filter($database, "filterfunction"); 
+0

Что такое 'strcomp()'? Нет необходимости в '$ ret', просто верните' true' или 'false', чтобы сделать код более понятным. –

+1

жаль, что это была опечатка strcomp, скорректированная теперь на strcmp. вы правы в отношении истинного/ложного возврата. просто способ кодирования вещей другим способом, но я согласен с вами и отредактировал это тоже –

2

Вы можете использовать array_filter(). Он принимает обратный вызов, где вы можете добавить пользовательскую логику в фильтр результирующий набор.

Использование строковых функций, таких как strpos() или substr() должно быть довольно простым.

+0

Чтобы упредить комментарии или проголосовать, это * обучение, как рыбать * ответ при условии отсутствия кода в OP. –

+0

Я не думаю, что это будет работать здесь и сейчас, к сожалению. Потому что, пока кто-то предоставляет код копирования и вставки, который OP может использовать, и это не похоже на полночь, OP просто предпочитает/выбирает (до 99%) самый простой способ для него, и это будет код копирования и вставки. Таким образом, вы не получите OP там, что он будет исследовать/использовать ваши подсказки и советы, чтобы попытаться решить проблему самостоятельно, и вы поможете ему добраться туда, чтобы в конце OP мог сказать, что все это сделали сам и сделал это! (Какой был бы лучший способ получить решение, которое я думаю! И где OP имеет самый успешный успех!) – Rizier123

+0

@ Rizier123, согласен. К сожалению, кто-то отправил ответ «копировать/вставить». Что, конечно, было принято;) –

Смежные вопросы