在下面的代码中,第一个foreach ($booklist as $post)
正确提取数据,但第二个foreach ($authorlist as $post)
没有返回任何内容,尽管第二个foreach
中选择了一个。我仍然收到错误
警告:为行
提供的foreach()参数无效foreach ($authorlist as $post)
...
但是,只要删除第一个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
答案 0 :(得分:1)
您将$post
设置为所有循环的行:foreach ( $all as $post )
和foreach ($booklist as $post)
以及foreach ($authorlist as $post)
。所以$post
将在所有的前景中发生变化。更改变量名称。