Поиск совпадения парциального значения в массиве

Я ищу функцию, в которой задан этот массив,

array( [0] => array( ['text'] =>'I like Apples' ['id'] =>'102923' ) [1] => array( ['text'] =>'I like Apples and Bread' ['id'] =>'283923' ) [2] => array( ['text'] =>'I like Apples, Bread, and Cheese' ['id'] =>'3384823' ) [3] => array( ['text'] =>'I like Green Eggs and Ham' ['id'] =>'4473873' ) etc.. 

Я хочу найти иглу

"Хлеб"

и получим следующий результат:

 [1] => array( ['text'] =>'I like Apples and Bread' ['id'] =>'283923' ) [2] => array( ['text'] =>'I like Apples, Bread, and Cheese' ['id'] =>'3384823' 

Используйте array_filter . Вы можете предоставить обратный вызов, который решает, какие элементы остаются в массиве и который должен быть удален. (Возвращаемое значение false из обратного вызова указывает, что данный элемент должен быть удален.) Что-то вроде этого:

 $search_text = 'Bread'; array_filter($array, function($el) use ($search_text) { return ( strpos($el['text'], $search_text) !== false ); }); 

Чтобы получить больше информации:

  • array_filter
  • Возвращаемые значения strpos

также проверьте этот ответ

 $filenames=array("120_120_435645.jpg","150_150_312312.jpg","250_250_1232327.jpg"); $matches = preg_grep("/312312/", $filenames); 

есть ли причина для множественного массива. id уникален и может использоваться как индекс.

 $data=array( array( 'text' =>'I like Apples', 'id' =>'102923' ) , array( 'text' =>'I like Apples and Bread', 'id' =>'283923' ) , array( 'text' =>'I like Apples, Bread, and Cheese', 'id' =>'3384823' ) , array( 'text' =>'I like Green Eggs and Ham', 'id' =>'4473873' ) ); 

$ FindMe = 'хлеб';

  foreach ($data as $k=>$v){ if(stripos($v['text'], $findme) !== false){ echo "id={$v[id]} text={$v[text]}<br />"; // do something $newdata=array($v[id]=>$v[text]) } }