与 php 中的 foreach 混淆


Confusion with foreach in php

我在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') ?>的内容,而右侧的内容我看不到它。如果我删除=那么我就会出错,所以我做得不好。

提前谢谢。

引用

你的代码...

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

第二个回显无效。您可以使用<?=<?php echo,但不能使用<?php= echo

将我上面引用的行更改为

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

你应该得到你所追求的

没有分隔符<?php=

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

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

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

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

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