如何解决从 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 举报,一经查实,本站将立刻删除。