在Array中搜索部分值匹配

Cha*_*yan 22 php search multidimensional-array

我正在寻找一个给定这个数组的函数,

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.. 
Run Code Online (Sandbox Code Playgroud)

我想寻找针头

"面包"

并得到以下结果

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

Jon*_*ier 44

使用array_filter.您可以提供一个回调函数,用于决定哪些元素保留在数组中以及哪些元素应该被删除.(false回调的返回值表示应该删除给定的元素.)像这样:

$search_text = 'Bread';

array_filter($array, function($el) use ($search_text) {
        return ( strpos($el['text'], $search_text) !== false );
    });
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息:

  • `use`关键字使您在函数范围内提供的变量可用.默认情况下,函数`$ search_text`内部是未定义的,所以我们写`use`让PHP将变量"转移"到本地范围. (4认同)
  • 最好使用 `strpos(...) !== FALSE`。这节省了函数调用,而且速度更快。 (2认同)

aro*_*rod 11

检查这个答案

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