2014-09-23 6 views
1

У меня есть массив из функции WordPress 'get_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) 
} 

И у меня есть массив с идентификаторами сообщений для исключения.

$ ids_of_posts_to_exclude:

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

Как удалить сообщения, которые идентификаторы перечислены в $ids_of_posts_to_exclude из $posts?

(еще некоторые детали, еще некоторые детали, еще некоторые детали)

+0

Посмотрите на '' 'array_dif''' - http://php.net/manual/en/function.array-diff. php – Kolors

+0

цикл затем не задан – Ghost

ответ

1

Вы можете просто сделать это с помощью цикла Еогеаспа и 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 
    } 
} 
+0

@simplethings рад, что он помог – Ghost

1

другой способ использования 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); 
}); 
Смежные вопросы