PHP & HTML foreach 的替代语法:未定义的变量
PHP & HTML Alternate syntax for foreach: Undefined variable
编辑:我在这些示例中使用了 wamp。
关于 foreach 中的 PHP 和 HTML 备用语法,肯定有一些我没有弄清楚的地方。
以下代码导致
Notice: Undefined variable: array1Value in index.php on line 8
Notice: Undefined variable: array2Value in index.php on line 12
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>
这行得通,但我真的很想了解为什么我的示例行不通。
您必须启用 short_open_tag
配置值才能使用短标签 <?
而不是 <?php
。从 PHP 5.4.0 开始,您可以使用 <?=
而无需启用此指令
你每次只收到一次警告,对吧?
那是因为你的循环实际上并没有执行——因为你只在 foreach 语句上使用了 <?
,如果 short_open_tags
关闭,这意味着你的循环语句根本不执行——所以变量不是一开始就设置的。但是随后您尝试使用 <?=
输出它们,并且无论上述设置如何都有效。
(修复该问题后,您仍会收到第二个循环的警告,因为在 foreach
语句中您使用了带有大写字母 V
的 $array2Value
,但随后 $array2value
在循环中使用小写字母 v
。)
编辑:我在这些示例中使用了 wamp。
关于 foreach 中的 PHP 和 HTML 备用语法,肯定有一些我没有弄清楚的地方。
以下代码导致
Notice: Undefined variable: array1Value in index.php on line 8
Notice: Undefined variable: array2Value in index.php on line 12
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>
这行得通,但我真的很想了解为什么我的示例行不通。
您必须启用 short_open_tag
配置值才能使用短标签 <?
而不是 <?php
。从 PHP 5.4.0 开始,您可以使用 <?=
而无需启用此指令
你每次只收到一次警告,对吧?
那是因为你的循环实际上并没有执行——因为你只在 foreach 语句上使用了 <?
,如果 short_open_tags
关闭,这意味着你的循环语句根本不执行——所以变量不是一开始就设置的。但是随后您尝试使用 <?=
输出它们,并且无论上述设置如何都有效。
(修复该问题后,您仍会收到第二个循环的警告,因为在 foreach
语句中您使用了带有大写字母 V
的 $array2Value
,但随后 $array2value
在循环中使用小写字母 v
。)