我想在PHP if语句中使用PHP echo作为条件。
目的是将John Doe撰写的博客文章列表显示在他的传记页面上。
当我在 if条件中直接写作者姓名时,它有用:
<!-- current page: biography page -->
<div id="list_of_articles_by_John_Doe">
<?php foreach(page('magazine')->children() as $article): ?>
<?php if($article->author() == 'John Doe'): ?>
<p><?php echo $article->title() ?></p>
<?php endif ?>
<?php endforeach ?>
</div>
但是我想自动化这个过程,为每个作家的传记页面都有自己的文章列表。
我试图将当前传记页面($ page)的作者作为一个条件:
<!-- current page: biography page -->
<div id="automatic_list_of_articles">
<?php foreach(page('magazine')->children() as $article): ?>
<?php if($article->author() == $page->author()): ?>
<p><?php echo $article->title() ?></p>
<?php endif ?>
<?php endforeach ?>
</div>
但是它产生了另一个问题:它不起作用,因为在 foreach语句中,$page->author()
(if语句中的条件)不会回应作者一次,但每次一次page('magazine')->children() as $article
。
条件if($article->author() == $page->author())
在这种情况下不起作用,因为$page->author()
并非严格来说是作者的名字。
我想知道如何在foreach语句中调用$page->author()
只回显一次作者的名字。
答案 0 :(得分:1)
可以选择将所有作者保存在数组中
// if article->author() isn't within the array
$authors[] == $article->author();
之后你可以按照以下方式进行:
<?php foreach($authors as $author){ ?>
<?php foreach(page('magazine')->children() as $article): ?>
<?php if($article->author() == $author()): ?>
<p><?php echo $article->title() ?></p>
<?php endif ?>
<?php endforeach ?>
<?php } ?>
这应该有用,即使你必须做2个foreachs
答案 1 :(得分:0)
<?php if( $article->author() == $page->author() ) { ?>
<p><?php echo $article->title(); ?></p>
<?php } ?>
应该有效,但您也可以尝试
<?php
if( $article->author() == $page->author() ) {
echo "\n<p>", $article->title(), "</p>\n";
}
?>
对我来说,看起来“干净”;但是你必须要找一些丢失的空格
答案 2 :(得分:0)
我建议尝试将它设置为变量,然后在if语句中使用该变量。
<?php foreach(page('magazine')->children() as $article): ?>
<?php $condition = $page->author()?>
<?php if($article->author() == $condition ?>'): ?>
echo "\n<p>", $article->title(), "</p>\n";
<?php endif ?>
<?php endforeach ?>
我不确定我的语法是否正确,但我认为这是他们的行。
答案 3 :(得分:0)
你确定你不应该这样吗?
<div id="automatic_list_of_articles">
<?php $page = page('magazine'); ?>
<?php foreach($page->children() as $article): ?>
<?php if($article->author() == $page->author()): ?>
<p><?php echo $article->title() ?></p>
<?php endif ?>
<?php endforeach ?>
</div>
我已经重新构建了一个看起来像你的数据的近似值,你可以在下面的链接中看到它。它正确地回应了多篇文章标题。
工作示例:
在这个例子中,您可以看到上面的PHP工作正常,并且可能是数据问题(即您应该使用$ page而不是在foreach语句中调用函数)。
答案 4 :(得分:0)
你不能在条件中使用echo,因为它是特殊的语言结构,它将给定的内容发送到输出流并且它不返回任何值。