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