gpt4 book ai didi

php - 使用 array_udiff 比较两个对象数组

转载 作者:可可西里 更新时间:2023-10-31 23:04:00 24 4
gpt4 key购买 nike

数组 1:$tags_result

    array (size=4)
0 =>
object(stdClass)[8]
public 'id_tag' => string '2' (length=1)
public 'tag' => string 'tag 1' (length=5)
1 =>
object(stdClass)[9]
public 'id_tag' => string '5' (length=1)
public 'tag' => string 'tag 4' (length=5)
2 =>
object(stdClass)[10]
public 'id_tag' => string '6' (length=1)
public 'tag' => string 'tag 7' (length=5)
3 =>
object(stdClass)[11]
public 'id_tag' => string '7' (length=1)
public 'tag' => string 'tag 9' (length=5)

数组 2:$post_tags_result

    array (size=2)
0 =>
object(stdClass)[5]
public 'id_tag' => string '2' (length=1)
public 'tag' => string 'tag 1' (length=5)
1 =>
object(stdClass)[6]
public 'id_tag' => string '6' (length=1)
public 'tag' => string 'tag 7' (length=5)

我正在尝试提取数组 1 中没有出现在数组 2 中的值:

function foo($tags_result, $post_tags_result){
return $tags_result->id_tag != $post_tags_result->id_tag;
}

$difference_tags = array_udiff($tags_result, $post_tags_result, 'foo');

但结果返回一个共同的值:标签 1。我希望只有标签 4 和标签 9。

    array (size=3)
0 =>
object(stdClass)[8]
public 'id_tag' => string '2' (length=1)
public 'tag' => string 'tag 1' (length=5)
1 =>
object(stdClass)[9]
public 'id_tag' => string '5' (length=1)
public 'tag' => string 'tag 4' (length=5)
3 =>
object(stdClass)[11]
public 'id_tag' => string '7' (length=1)
public 'tag' => string 'tag 9' (length=5)

最佳答案

作为替代方案,您可以先收集所有需要排除的标签。然后,您现在可以通过 array_filter 过滤它并获得所需的结果。粗略的例子:

$tags = array();
foreach($post_tags_result as $t) {
$tags[] = $t->tag; // gather all tags
}
// filter array using gathered tags
$result = array_filter($tags_result, function($v) use($tags){
return !in_array($v->tag, $tags);
});

Sample Output

关于php - 使用 array_udiff 比较两个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com