试图了解这个PHP代码中发生了什么?

时间:2014-02-21 15:33:25

标签: php

我用其他语言编程,但我的工作涉及阅读PHP,我试图理解这个视图页面的一部分(我们使用MVC)。

<?
foreach ($slides as $i => $slide) {
  ?>
  <li class="yui3-carousel-element<?=$i > 0 ? ' hidden-node' : ''?>">
  <?
  1. 为什么循环被<??>包围?我认为那些在整个PHP脚本的两端都有,但我看到它们分散在整个事情中。

  2. 这三元表达似乎只是浮动......它不是echo'ed或print'或者连接到任何东西......更不用说它看起来很奇怪了将数字0与我无法解决的数字进行比较....它不是一个字符串......它是一个没有结束标记的li元素?在PHP?我很困惑。

5 个答案:

答案 0 :(得分:1)

<??>标记是短标记,表示PHP代码在其中。当它们关闭时,它会回到简单输出HTML。

您在广告中看到的<?=只是<?php echo的缩写

我个人可能会在开始时将标签打开,然后在循环中的行上进行回显。有什么相当于以下内容:

<?php
foreach ($slides as $i => $slide) {
    $hiddenElement = $i > 0 ? ' hidden-node' : '';
    echo '<li class="yui3-carousel-element'.$hiddenElement.'">';

答案 1 :(得分:1)

<? ?>在PHP中称为短标记。它们表示PHP代码的开始和结束。三元也包裹着短标签。这个三元组实际上是根据$slide的当前索引是否大于0来向类添加内容。li是HTML,应该关闭。

答案 2 :(得分:1)

  1. 循环被这些循环包围,因为它正在退出PHP代码并输入HTML代码。例如,您可以执行:<?php /*code here blah blah*/ if (...) { ?> <div>ha</div> <?php } /*more code*/ ?>。在PHP中,如果你不用<?php ?>包装东西,那么它将作为HTML代码执行。
  2. <?=的声明是回声的捷径。字面意思是<?php echo (($i > 0) ? ' hidden-node' : '' ?>

答案 3 :(得分:1)

  1. <?用作php代码的开头标记,?>用作结束标记。 PHP可以与HTML等其他语言混合使用,如您的示例所示。

  2. 实际上它正在echo编辑,这就是=之后的<?。它只不过是echo的简短命令。 ?:的另一个问题是另一种简短形式。写出整件事等于if($i > 0) echo ' hidden-node'; else echo '';

  3. 所以代码添加了<li> - 每个幻灯片的元素和每个幻灯片除了第一个幻灯片之外它添加了类“隐藏节点”,当代码获取时,它很可能隐藏除第一个之外的所有其他元素加载。

答案 4 :(得分:0)

<??>php tags的简写。

之后很明显你可以看到了 <li class="yui3-carousel-element<?=$i > 0 ? ' hidden-node' : ''?>"> 部分是检查$i是否大于0并在{/ 1>}

时显示hidden-node