foreach循环中的第二个foreach返回bool(false),尽管存在数组


Second foreach in the foreach loop returns bool(false) though array is present

在我下面的代码中,第一个foreach ($booklist as $post)的数据被正确提取,但第二个foreach ($authorlist as $post)的数据没有返回任何内容,尽管选择了一个存在于第二个foreach中的数据。我仍然得到错误

警告:为foreach ($authorlist as $post)行的foreach()提供的参数无效。。。

然而,一旦我移除第一个foreach循环,第二个foreach就正确地返回数据。

下面是我的代码

<?php
$all= get_posts(array('post_type' => 'books', 'numberposts' => -1,));
foreach ( $all as $post ) :  setup_postdata($post);
    if (!empty($post))
    {
     $booklink = array();
     $booklist = get_field('booklist'); 
               foreach ($booklist as $post) : setup_postdata($post);
                    if (!empty($post))
                        {
                        $booklink[] = strip_tags(get_field('booklink',$post));                                       
                        }
                endforeach;
                wp_reset_postdata();
     echo $booklink[0];  
     $authorname = array();
     $authorlist = get_field('authorlist'); 
               foreach ($authorlist as $post) : setup_postdata($post);
                    if (!empty($post))
                        {
                        $authorname[] = strip_tags(get_field('authorname',$post));                                       
                        }
                endforeach;
                wp_reset_postdata();
echo $authorname[0]; 
    }
endforeach;
?>

我执行了var_dump($authorlist),只要存在foreach ($booklist as $post)循环,它就会返回bool(false)。当我移除那个循环时,转储会正确地显示authorlist的数据。如何使两个循环协同工作?

您可以在这里看到输出

您将$post设置为所有循环的行:foreach ( $all as $post )foreach ($booklist as $post)foreach ($authorlist as $post)。因此CCD_ 15将在所有前臂中改变。更改变量名称。