虽然数组存在,但foreach循环中的第二个foreach返回bool(false)

时间:2014-08-31 04:58:58

标签: php foreach

在下面的代码中,第一个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),只要bool(false)循环存在,它就会返回foreach ($booklist as $post)。我删除该循环的那一刻,转储正确显示authorlist的数据。如何让两个循环一起工作?

您可以看到输出here

1 个答案:

答案 0 :(得分:1)

您将$post设置为所有循环的行:foreach ( $all as $post )foreach ($booklist as $post)以及foreach ($authorlist as $post)。所以$post将在所有的前景中发生变化。更改变量名称。