数组匹配值过滤PHP

时间:2015-10-10 17:13:37

标签: php arrays

我试图在数组中搜索,但根本没有得到任何结果。

假设我有一个包含一些值的数组。

所以当我想搜索它们时,它总是返回null!

不知道原因!

假设这是我的数组 -

$data = Array
    (
    [0] => Array
    (
        [id] => 122
        [name] => Fast and furious 5
        [category] => Game
    )

    [1] => Array
    (
        [id] => 232
        [name] => Battlefield and more 
        [category] => Game
    )

    [2] => Array
    (
        [id] => 324
        [name] => Titanic the legend
        [category] => movie
    )

    [3] => Array
    ....

所以我试过这样 -

   $search = 'and'; // what I want to search
   $nameSearch = array_search($search, $data);
   print_r($nameSearch);

输出 - 空

   $search='and'; // what i want to search
   $nameSearch=  array_filter($search, $data);
   print_r($nameSearch);

输出 - 空

目标是找到与数组中的任何内容匹配的值。

意思是,如果我要求“和”作为回报我应该

Fast and furious 5
Battlefield and more 

由于值包含“和”。

2 个答案:

答案 0 :(得分:4)

array_filterarray_search查找完全匹配。如果您想要部分匹配,请将array_filterstripos结合使用:

$search = 'and';

print_r(array_filter($data,function($a) use ($search) {
    return stripos($a['name'],$search) !== false;
}));

答案 1 :(得分:2)

这对你有用

 <?php
$array = array('Fast and furious ', 'Titanic the legend', 'Battlefield and more ', 'India', 'Brazil', 'Croatia', 'Denmark');
$search = preg_grep('/and.*/', $array);
echo '<pre>';
print_r($search );
echo '</pre>';
?>