PHP echo if PHP语句中的条件

时间:2014-12-18 15:19:58

标签: php if-statement echo

我想在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()只回显一次作者的名字。

5 个答案:

答案 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>

我已经重新构建了一个看起来像你的数据的近似值,你可以在下面的链接中看到它。它正确地回应了多篇文章标题。

工作示例:

http://ideone.com/jvLVhF

在这个例子中,您可以看到上面的PHP工作正常,并且可能是数据问题(即您应该使用$ page而不是在foreach语句中调用函数)。

答案 4 :(得分:0)

你不能在条件中使用echo,因为它是特殊的语言结构,它将给定的内容发送到输出流并且它不返回任何值。