从多维数组中删除多个值

Posted

技术标签:

【中文标题】从多维数组中删除多个值【英文标题】:Delete multiple values from multidimensional array 【发布时间】:2014-11-17 14:54:02 【问题描述】:

我有一个来自 WordPress 的 get_posts() 函数的数组。

$posts:

array(15) 
[0]=>
  object(WP_Post)#285 (24) 
    ["ID"]=>
    int(253)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_date_gmt"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_content"]=>
    string(8) "gsdljdkf"
    ["post_title"]=>
    string(10) "Shortcoded"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(6) "closed"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(12) "shortcoded-2"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_modified_gmt"]=>
    string(19) "2014-04-17 18:36:27"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(51) "http://XXX.0.0.1:4001/wordpress/board/shortcoded-2/"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(10) "board_post"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  
  [1]=>
  object(WP_Post)#284 (24) 
    (so on and so forth for all posts)

我有一个数组,其中包含要排除的帖子 ID。

$ids_of_posts_to_exclude:

array(3) 
  [0]=> string(253)
  [1]=> string(456)
  [2]=> string(789)

如何从$posts中删除id在$ids_of_posts_to_exclude中的帖子?

【问题讨论】:

看看array_dif - php.net/manual/en/function.array-diff.php 【参考方案1】:

您可以使用 foreach 循环和 in_array() 函数来执行此操作。像这样:

foreach($posts as $key => $post) 
    // if post id is inside the ids of posts to be excluded
    if(in_array($post->ID, $ids_of_posts_to_exclude)) 
        unset($posts[$key]); // remove that key
    

【讨论】:

@simplethings 很高兴它有帮助【参考方案2】:

使用array_filter的另一种方式

$filtered_posts = array_filter($posts,function($post) use ($ids_of_posts_to_exclude) 
    return in_array($post->ID,$ids_of_posts_to_exclude);
);

【讨论】:

以上是关于从多维数组中删除多个值的主要内容,如果未能解决你的问题,请参考以下文章

根据值从多维数组中删除元素

从命名的多维数组中删除一个值[关闭]

从php中的多维数组中删除重复值

如何从 PHP 中的多维数组中删除重复值 [重复]

如果两个值匹配,则从 php 中的多维关联数组中删除重复项

单击按钮时如何从本地存储中删除多维数组?