微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 foreach 内部的数组中删除数组

如何解决从 foreach 内部的数组中删除数组

我找到了有关在 foreach 中从数组中删除单个元素的建议,但在尝试从数组中删除数组时无法使其正常工作。这是我正在使用的:

<?PHP
$all_posts = array('1','2','3','4','5'); // example array of wordpress post IDs from a get_posts function

foreach ($all_posts as $op_post) {

    $op_title = get_the_title($op_post);
    $same_title_posts = get_posts([ // get posts with same title
        'title' => $op_title,'post__not_in' => array($op_post),'posts_per_page' => -1,'fields' => 'ids',]);

    // example contents of $same_title_posts - array('1','2')

    foreach($same_title_posts as $same_title_post) {
        // function
    }

     // before $all_posts loops again,need to remove contents of $same_title_posts array from $all_posts array

}
?>

解决方法

我建议使用 array_diff

<?php
$all_posts = array('1','2','3','4','5'); // example array of WordPress post IDs from a get_posts function
$same_title_posts = array('1','2'); //
$arrays = array_diff($all_posts,$same_title_posts);

//then loop $arrays

foreach ($arrays as $op_post){
    $op_title = get_the_title($op_post);
    $same_title_posts = get_posts([ // get posts with same title
        'title' => $op_title,'post__not_in' => array($op_post),'posts_per_page' => -1,'fields' => 'ids',]);
}
?>
,

找到解决方案 - 在我添加的函数的开头:

$skip_array = array(); // start with an empty array to avoid errors

然后在我添加的第一个 foreach 的开头:

if(!in_array($id,$skip_array)) { // check if foreach ID has been added to skip_array
  // function
}

在第二个 foreach 的末尾我添加了:

$skip_array[] = $id; // add ID that has been processed to skip_array

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。