Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск по массиву
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Поиск по массиву

Страниц (1): [1]
 

1. vadka - 20 Ноября, 2015 - 16:40:28 - перейти к сообщению
Здравствуйте!
Помогите пожалуйста решить проблему.
Есть массив примерно такого вида:
PHP:
скопировать код в буфер обмена
  1. $arr = array(
  2. "string1" => array("text1 text2 text3", "text4 text5 text6", "text7 text8 text9"),
  3. "string2" => array("text10 text11 text12", "text13 text14 text15", "text16 text16 text17"),
  4. "string3" => array("text18 text19 text20", "text21 text22 text23", "text24 text25 text26"),
  5. );


Что бы осуществить поиск по нему использую функцию:
PHP:
скопировать код в буфер обмена
  1. $needle = "text1";
  2. $result = array_filter($arr, function($innerArray){
  3.     global $needle;
  4.     return in_array($needle, $innerArray);    //Поиск по всему массиву
  5.     return ($innerArray[0] == $needle); //Поиск по первому значению
  6. });


Всё работает, если в элементе массива находится только "text1", но задача состоит в поиске по маске, то есть найти например "text14". Помогите подправить код.
2. andrewkard - 20 Ноября, 2015 - 16:51:01 - перейти к сообщению
vadka
3. Мелкий - 20 Ноября, 2015 - 16:51:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. - $result = array_filter($arr, function($innerArray){
  2. -    global $needle;
  3. + $result = array_filter($arr, function($innerArray) use($needle) {

Но к вопросу это не относится.

В прростом случае mb_strpos в помощь.
4. vadka - 20 Ноября, 2015 - 17:04:46 - перейти к сообщению
andrewkard
Не могу разобраться куда это вставить.
(Добавление)
Все, разобрался, спасибо большое andrewkard.

Так же спасибо Мелкий за подправку.

 

Powered by ExBB FM 1.0 RC1