Поиск элемента массива PHP, содержащего строку

$example = array('An example','Another example','Last example'); 

Как я могу выполнить свободный поиск слова «Last» в вышеприведенном массиве?

 echo array_search('Last example',$example); 

В приведенном выше коде будет отображаться только символ значения, если игла точно соответствует всем значениям, чего я не хочу. Я хочу что-то вроде этого:

  • Как я могу «сдвоить» развязать вложенный массив?
  • Преобразование многомерного массива в один массив
  • Прочитайте каждую строку файла txt новому элементу массива
  • while (list ($ key, $ value) = each ($ array)) vs. foreach ($ array as $ key => $ value)?
  • фильтровать значения из массива, аналогичного SQL LIKE '% search%', используя PHP
  • PHP. Проверка наличия или отсутствия индекса массива.
  •  echo array_search('Last',$example); 

    И я хочу, чтобы ключ значения эхо, если значение содержит слово «Последний».

  • PHP + Jquery - передать значение через ajax в php и проверить переменную
  • как выполнить модульный вызов curl в php
  • Ускорение большого количества обновлений и вставок mysql
  • Как включить короткие теги PHP?
  • MySQL возвращает только одну строку
  • Опубликовать данные и получить ответ с помощью PHP Curl?
  • 5 Solutions collect form web for “Поиск элемента массива PHP, содержащего строку”

    Чтобы найти значения, соответствующие вашим критериям поиска, вы можете использовать функцию array_filter :

     $example = array('An example','Another example','Last example'); $searchword = 'last'; $matches = array_filter($example, function($var) use ($searchword) { return preg_match("/\b$searchword\b/i", $var); }); 

    Теперь массив $matches matches будет содержать только элементы из вашего исходного массива, содержащие слово last (без учета регистра).

    Если вам нужно найти ключи из значений, соответствующих критериям, вам необходимо перебрать массив:

     $example = array('An example','Another example','One Example','Last example'); $searchword = 'last'; $matches = array(); foreach($example as $k=>$v) { if(preg_match("/\b$searchword\b/i", $v)) { $matches[$k] = $v; } } 

    Теперь массив $matches содержит пары ключ-значение из исходного массива, где значения содержат (нечувствительное к регистру) слово last .

     function customSearch($keyword, $arrayToSearch){ foreach($arrayToSearch as $key => $arrayItem){ if( stristr( $arrayItem, $keyword ) ){ return $key; } } } 
     $input= array('An example','Another example','Last example'); $needle = 'Last'; $ret = array_keys(array_filter($input, function($var) use ($needle){ return strpos($var, $needle) !== false; })); 

    Это даст вам все ключи, значение которых содержит иглу.

    Он находит ключ элемента с первым совпадением:

     echo key(preg_grep('/\b$searchword\b/i', $example)); 

    И если вам нужны все ключи, используйте foreach:

     foreach (preg_grep('/\b$searchword\b/i', $example) as $key => $value) { echo $key; } 

    Я также искал решение проблемы OP, и я наткнулся на этот вопрос через Google. Однако ни один из этих ответов не сделал это для меня, поэтому я придумал что-то немного отличное, что хорошо работает.

     $arr = array("YD-100 BLACK", "YD-100 GREEN", "YD-100 RED", "YJ-100 BLACK"); //split model number from color $model = explode(" ",$arr[0]) //find all values that match the model number $match_values = array_filter($arr, function($val,$key) use (&$model) { return stristr($val, $model[0]);}, ARRAY_FILTER_USE_BOTH); //returns //[0] => YD-100 BLACK //[1] => YD-100 GREEN //[2] => YD-100 RED 

    Это будет работать только с PHP 5.6.0 и выше.

    PHP is the Best Programming Language in the world.