【问题标题】:Need help modifying an echo statement to accommodate for another echo statement within it需要帮助修改 echo 语句以适应其中的另一个 echo 语句
【发布时间】:2018-02-05 21:15:59
【问题描述】:

我正在构建一个 Bootstrap 轮播库来显示帖子图片。我大部分时间都在工作,但是我的 PHP 在 .item div 中重复图像时遇到了问题。检查查看源 HTML 后,我发现了问题所在,并且我知道如何解决它,但我无法执行它。

我的问题是使用另一个需要嵌套在我的主 echo 语句中的 echo 语句。

我一直在这里和其他一些网站上寻找其他回声语句中的回声,但我似乎无法正确执行它。我对 PHP 还是比较陌生,当我试图让事情正常工作时,我可能会错过一系列的 '' 和/或 "" 。如果有人能帮我解决这个问题,我将不胜感激。

我需要做的是编写这段代码:

<div class="<?php echo $i == 0 ? 'item active':'item';  ?>" align="center">
  <img src='admin/images/".$imrow->img_name."' width='auto' height='auto'/>
</div>

存在于下面代码中的echo "..." 中,因此所有图像都可以相互独立地存在。

           <?php 
            $imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
            $q2 = $db->query($imsql);
            if($q2->num_rows>0){
              while ($imrow = $q2->fetch_object()){  
              echo "<img src='admin/images/".$imrow->img_name."' width='auto' height='auto'/>";
            }
          }
            ?>

编辑以供将来参考

这是我在 carousel-inner div 工作之前的代码:

    <div class="carousel-inner">

      <?php
        $i = 0;
        for ($a = 2; $a < count($files); $a++):
      ?>

   <div class="<?php echo $i == 0 ? 'item active':'item';  ?>" align="center">

       <?php 
        $imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
        $q2 = $db->query($imsql);
        if($q2->num_rows>0){
          while ($imrow = $q2->fetch_object()){  
    echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
    echo '</div>';
        }
      }
        ?>
     </div>

      <?php
        $i++;
        endfor;
      ?>
    </div>

这是完成我需要的版本:

<div class="carousel-inner">

          <?php
            $i = 0;
            for ($a = 2; $a < count($files); $a++):
          ?>

           <?php 
            $imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
            $q2 = $db->query($imsql);
            if($q2->num_rows>0){
              while ($imrow = $q2->fetch_object()){  
                echo '<div class="' . ($i == 0 ? 'item active' : 'item') . '" align="center">';
        echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
        echo '</div>';
            }
          }
            ?>

          <?php
            $i++;
            endfor;
          ?>
        </div>

【问题讨论】:

  • 我真的不太明白你的意思。您的示例不清楚 - 看起来img 标签已经在您的div 中,而不是相反。也许您需要做的是将 HTML 字符串作为变量,在一系列语句中逐渐建立,而不是在生成时立即回显所有内容?然后,您可以更好地控制输出,并且可以对其进行更多更改。回声中的回声毫无意义。 echo 将完成的输出发送到客户端。如果还没有完成,请不要回显它。
  • 这两个段是否在同一个文档中?

标签: php


【解决方案1】:

不确定我是否理解您想要实现的目标,但这是我的猜测:

<?php 
$imsql = "SELECT img_name, img_path FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
    $i = 0;
    while ($imrow = $q2->fetch_object()) {
        echo '<div class="' . ($i++ === 0 ? 'item active' : 'item') . '" align="center">';
        echo '<img src="admin/images/' . $imrow->img_name . '" width="auto" height="auto"/>';
        echo '</div>';
    }
}

该代码一点也不漂亮,但我试图让您当前的代码正常工作。当然,还有许多其他方法可以实现这一点。当然,您需要一个计数器$i,它没有包含在您的代码示例中。

这是另一个选项,您可以使用正确的 css 类显示打开的 div。始终将 item 用作类,仅在需要时添加 active:

echo '<div class="item' . ($i++ === 0 ? ' active' : '') . '" align="center">';

【讨论】:

  • $i 是在哪里生成的?
  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
  • 谢谢!这正是我需要做的。我想我很难弄清楚. ($i == 0 ? 'item active' : 'item') . 部分并且没有尝试它周围的括号。这完全有道理。
  • @Juakali92 我意识到我从来没有包括我从哪里生成$i,因为它在我的编码中更进一步,我忘了抓住它。我将修改我的问题,以将其包含在其他可能认为此问题及其答案有用的人中。
【解决方案2】:

我认为这会奏效

echo '<div class="'.($i == 0 ? 'item active':'item').'" align="center"><img src=\'admin/images/\''.$imrow->img_name.'\' width=\'auto\' height=\'auto\'/></div>'

【讨论】:

    【解决方案3】:

    据我所知,您可以在启动 while 循环后关闭 php 标签,然后添加您需要的代码并再次打开 php 标签。 例如

    While(true) { ?>
    // html or php code here
    <?php }
    

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2019-05-18
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多