将数组值与字符串匹配并返回数组PHP

时间:2017-11-06 14:40:41

标签: php arrays regex string

我有一个像这样的数组

 0 => array:4 [▼
    "Name" => "Aroma Therapy - 45 minutes"
    "ID" => "1000000015"
    "Price" => "50.00"
    "Category" => "Aroma"
  ]
  1 => array:4 [▼
    "Name" => "Aroma Therapy - 60 Minutes"
    "ID" => "0000000003"
    "Price" => "100.00"
    "Category" => "Aroma"

我想要实现的是,每当用户搜索'therapy''aroma'时,我都希望与此数组的名称匹配并返回其价格, ID。

我尝试使用strpos() strstr()和正则表达式,我可以找到搜索是否匹配但是我无法获得匹配时返回数组的功能。

因此,如果用户搜索'therapy',我想在一个名为$result的变量中返回上面的两个数组。所以我可以像这样访问它的名字,ID和价格

$result->Name, $result->ID, $result->Price

有关如何实现此类功能的任何想法?

1 个答案:

答案 0 :(得分:3)

使用array_filterstripos(),您可以获取数组项

  

stripos - 找到第一次出现的位置   字符串中不区分大小写的子字符串

     

array_filter - 使用回调过滤数组的元素   功能

// keyword to be searched
$keyword = 'aroma';

// you will get all array items of matched 
$result_array = array_filter($array, function($item) use ($keyword) {
        return ( stripos($item['Name'], $keyword) !== false );
});

// to convert to object
$object = json_decode( json_encode($result_array) );