与php中的foreach混淆

时间:2016-02-04 20:56:10

标签: php foreach

我在php中遇到一些循环问题。它与foreach循环有关。我有这段代码:

<?php foreach($obras as $obra): ?>
    <li>
        <a class="thumb" href="<?php echo $base_url . 'assets/uploads/files/' . $obra["imagen"] ?>" title="<?php echo $obra['titulo'] ?>">
            <img src="<?php echo $base_url . 'assets/uploads/files/' . $obra["imagen"] ?>" alt="<?php echo $obra['titulo'] ?>" />
        </a>
        <div class="caption">
            <div class="image-desc">

                <p><?= t('global_pieces_artist')?>: <?php echo $obra['nombre_artista'] . ' ' . $obra['apellidos_artista'] ?></p>
                <p><?= t('global_pieces_title')?>: <?php echo $obra['titulo'] ?></p>
                <p><?= t('global_pieces_year')?>: <?php echo $obra['ano'] ?></p>
                <p><?= t('global_pieces_size')?> (cm.): <?php echo $obra['tamano_alto'] ?> x <?php echo $obra['tamano_ancho'] ?><? if ($obra['tamano_largo'] != null): ?> x <?php echo $obra['tamano_largo'] ?><? endif; ?></p>
                <p><?= t('global_pieces_technique')?>: <?php echo $obra['tecnica'] ?> </p>

                <? if (isset($obra['username'])): ?>
                    <p><?= t('global_company') ?>: <?php= echo $obra['username'] ?></p>
                <? endif; ?>

                <p><?= t('global_pieces_price')?>: <?php echo ($obra['precio'] . ' ' . $obra['divisa']) ?> (<?= t('global_pieces_price_vat')?>)</p>

                <? if ($obra['observaciones'] != null): ?>
                    <p><?= t('global_pieces_observations')?>: <?php echo $obra['observaciones'] ?></p>
                <? endif; ?>

                <p id="links_last">
                    <a href="<?php echo $base_url . 'assets/uploads/files/' . $obra['imagen']?>"><?= t('global_download')?></a> |
                    <a href="javascript:window.print();"><?= t('global_print')?></a>
                </p>
            </div>
        </div>
    </li>
<?php endforeach; ?>

好吧,我要打印的所有东西都可以,但是当我到达这部分代码时:

<? if (isset($obra['username'])): ?>
    <p><?= t('global_company') ?>: <?php= echo $obra['username'] ?></p>
<? endif; ?>

当我遇到问题时,因为我可以看到我想要看到的左边是<?= t('global_company') ?>的内容,右边是什么我不能看见。如果我删除了=,那么我就会出错,所以我做错了。

提前致谢。

2 个答案:

答案 0 :(得分:1)

引用您的代码......

<p><?= t('global_company') ?>: <?php= echo $obra['username'] ?></p>

第二个回声不是有效的。您可以使用<?=<?php echo,但不能使用<?php= echo

将上面引用的行更改为

<p><?= t('global_company') ?>: <?= $obra['username'] ?></p>

你应该得到你之后的

答案 1 :(得分:0)

没有分隔符<?php=

<?php ... ?>:在这些标签中你有可执行的PHP代码。如果你想输出你必须通过使用例如echo

示例:<?php echo "Hello"; ?>打印出Hello

<?= ... ?>在这些标签中你有一个php变量或语句。函数的返回值或变量的值将自动打印出来。

示例:<?= time(); ?>打印出time()函数的返回值,这是unix时间戳格式的当前时间。

在您的代码中,您可以使用<?= $obra['username'] ?><?php echo $obra['username'] ?>,但 <?= $obra['username'] ?>,因为这不是有效的PHP。