删除数组中的术语

时间:2016-03-08 14:36:53

标签: php arrays

我有一个数组,如下所示:

"sort" : [
   {
      "book" : {
         "mode" :  "avg",
         "order" : "asc",
         "nested_path" : "favouriteOfUsers",
         "nested_filter" : {
            "term" : { "favouriteOfUsers.id" : 1234 }
         }
      }
   }
]

我有一个字符串变量:

$array = array(
  'hello',
  'world',
  'lorem',
  'ipsum',
  'what',
  'is',
  'reality'
);

因此,如果$terms = 'Hello World is reality!'; 包含$array中的任何字词,那么我想从数组中删除它们。因此,在这种情况下,$terms将最终成为:

$terms

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

$terms = 'Hello World is reality!';
$result = array_filter(array_map(function ($word) use ($terms) {
    if (!stristr($terms, $word)) {
       return $word;
    }
},$array));

输出:

array(3) {
  [2] =>
   string(5) "lorem"
  [3] =>
   string(5) "ipsum"
  [4] =>
   string(4) "what"
}

答案 1 :(得分:-2)

您需要先将字符串分解并将其转换为数组。

$termsArray = explode(" ", $terms);

然后简单地将它与第一个数组区分开来。

$result=array_diff($array,$termsArray);

这将返回$ termsArray中不存在的元素。