PHP& HTML foreach的替代语法:未定义的变量

时间:2015-02-16 10:06:36

标签: php html html5 foreach notice

编辑:我在这些例子中使用了wamp。

我必须找到一些关于PHP& foreach中的HTML替代语法。

以下代码导致

  

注意:未定义的变量:第8行的index.php中的array1Value

     

注意:未定义的变量:第12行的index.php中的array2Value

1: <?php
2: $array1 = getArray1(); // Returns an array with values
3: $array2 = getArray2(); // Also returns an array with values
4: ?>
5:
6:    <div class="doNotRemoveDiv">
7:        <? foreach($array1 as $array1Value): ?>
8:            <?= $array1Value ?>
9:        <? endforeach; ?>
10:
11:       <? foreach($array2 as $array2Value): ?>
12:           <?= $array2Value ?>
13:       <? endforeach; ?>
14:   </div>

我也试过

$array1 = ['value1', 'value2', 'value3'];
$array2 = ['value1', 'value2', 'value3'];

这里肯定有一些非常明显的东西,我只是愚蠢。

P.S。我知道我可以这样做:

6:    <div class="doNotRemoveDiv">
7:        <?php foreach($array1 as $array1Value) {
8:            echo $array1Value;
9:        } ?>
10:   </div>

这很有效,但我真的很想知道为什么我的例子不起作用。

2 个答案:

答案 0 :(得分:6)

每个人只收到一个警告,对吧?

那是因为你的循环实际上没有执行 - 因为你只在你的foreach语句中使用<?,如果short_open_tags关闭,那意味着你的循环语句根本不执行 - 所以首先没有设置变量。但是,您尝试使用<?=输出它们,无论上述设置如何都可以。

(在你解决之后,你仍然会收到第二个循环的警告,因为在foreach语句中你使用$array2Value使用大写V,但是{{1}在循环中使用小写$array2value。)

答案 1 :(得分:2)

您必须启用short_open_tag配置值才能使用短标记<?而不是<?php。从PHP 5.4.0开始,您可以在不启用此指令的情况下使用<?=