Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 过滤出数组中的对象_Php_Arrays_Wordpress_Object - Fatal编程技术网

Php 过滤出数组中的对象

Php 过滤出数组中的对象,php,arrays,wordpress,object,Php,Arrays,Wordpress,Object,在php中工作时,我收到一个对象数组($terms): } 在我的真实数组中,不是[4],而是[14]……但这并不重要,因为我不能依靠数字来确定目标 如果数组中的一个对象包含“slug”值“meow”,我想过滤掉该对象,并生成一个新的数组,其余对象都在tact中。 我需要在数组中排除具有特定值的特定对象。我的方法是使用“数组过滤器” 这就是我被困的地方(我觉得我离得很近,但遍历对象数组会给我带来困难): echos和var_转储可以帮助我进行调试。我觉得第四行是一个遗漏。提前感谢您的帮助,非常感

在php中工作时,我收到一个对象数组($terms):

}

在我的真实数组中,不是[4],而是[14]……但这并不重要,因为我不能依靠数字来确定目标

如果数组中的一个对象包含“slug”值“meow”,我想过滤掉该对象,并生成一个新的数组,其余对象都在tact中。

我需要在数组中排除具有特定值的特定对象。我的方法是使用“数组过滤器” 这就是我被困的地方(我觉得我离得很近,但遍历对象数组会给我带来困难):

echos和var_转储可以帮助我进行调试。我觉得第四行是一个遗漏。提前感谢您的帮助,非常感谢。

非常简单:

$new_array = array_filter(
    $terms, 
    function($v) { return $v->slug !== 'meow'; }
);

基本上,您的函数归结为
array\u filter
如何工作

array\u filter
中有两个参数

$array, $callback
$array
变量包含要筛选的数组。
$callback
是您希望为每个元素执行的函数,它将返回一个布尔值。保留为True,放弃为false

array\u filter
函数本身将在每个元素上循环,并将当前元素传递给回调函数

在此基础上,
array\u filter
函数执行以下操作:

$keep = [];
foreach($array as $item) {
    if($callback($item)) {
         $keep[] = $item;
    }
}
return $keep;
因此,在回调方法中,您只需要评估当前传递的项是否符合您的条件。如果是,则可以返回true。如果没有返回false

$matches = array_filter($terms, function($item) {
   return $item->slug != 'meow';
});
然后matches数组将只填充与导致回调函数返回true的条件匹配的项

$cats = array_filter($terms, function($item) {
   return $item->slug == 'meow';
});

$birds = array_filter($terms, function($item) {
   return $item->slug == 'tweet';
});

$raining_dogs_and_cats = array_filter($terms, function($item) {
   return $item->slug == 'bark' || $item->slug == 'meow';
});

谢谢你,穆德!
$matches = array_filter($terms, function($item) {
   return $item->slug != 'meow';
});
$cats = array_filter($terms, function($item) {
   return $item->slug == 'meow';
});

$birds = array_filter($terms, function($item) {
   return $item->slug == 'tweet';
});

$raining_dogs_and_cats = array_filter($terms, function($item) {
   return $item->slug == 'bark' || $item->slug == 'meow';
});