编辑:我在这些例子中使用了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>
这很有效,但我真的很想知道为什么我的例子不起作用。
答案 0 :(得分:6)
每个人只收到一个警告,对吧?
那是因为你的循环实际上没有执行 - 因为你只在你的foreach语句中使用<?
,如果short_open_tags
关闭,那意味着你的循环语句根本不执行 - 所以首先没有设置变量。但是,您尝试使用<?=
输出它们,无论上述设置如何都可以。
(在你解决之后,你仍然会收到第二个循环的警告,因为在foreach
语句中你使用$array2Value
使用大写V
,但是{{1}在循环中使用小写$array2value
。)
答案 1 :(得分:2)
您必须启用short_open_tag
配置值才能使用短标记<?
而不是<?php
。从PHP 5.4.0开始,您可以在不启用此指令的情况下使用<?=