我希望在我的页面上显示数组的所有键。
现在我有这个:
$subjectcodes[1] = "Mathematics";
$subjectcodes[2] = "Physics";
$subjectcodes[3] = "Charlie";
$subjectcodes[4] = "Chemistry";
$subjectcodes[5] = "Biology";
$subjectcodes[6] = "English";
$subjectcodes[7] = "Dutch";
$subjectcodes[8] = "German";
$subjectcodes[9] = "Sociology";
$subjectcodes[10] = "Physical Education";
$subjectcodes[11] = "Art";
$subjectcodes[12] = "General Science";
$subjectcodes[13] = "Philosophy";
$subjectcodes[14] = "Management and Organization";
$subjectcodes[15] = "Research and Design";
foreach ($subjectcodes as &$value) {
$key = key($subjectcodes);
echo "<option value=" . $key . ">" . $value . "</option>";
}
当我使用该代码访问我的页面时,我得到了:
<option value=2>Mathematics</option>
<option value=3>Physics</option>
<option value=4>Charlie</option>
<option value=5>Chemistry</option>
<option value=6>Biology</option>
<option value=7>English</option>
<option value=8>Dutch</option>
<option value=9>German</option>
<option value=10>Sociology</option>
<option value=11>Physical Education</option>
<option value=12>Art</option>
<option value=13>General Science</option>
<option value=14>Philosophy</option>
<option value=15>Management and Organization</option>
<option value=>Research and Design</option></select>
正如你所看到的那样,所有键都是1个更高的数字。最后一个选项甚至没有密钥...
有人为什么这样做,以及我如何解决这个问题?
谢谢!
答案 0 :(得分:7)
尝试:
foreach ($subjectcodes as $key=>$value) {
//$key = key($subjectcodes);
echo "<option value=" . $key . ">" . $value . "</option>";
}
答案 1 :(得分:3)
您可以在foreach()中使用键和值,因此请更改:
foreach ($subjectcodes as &$value) {
$key = key($subjectcodes);
echo "<option value=" . $key . ">" . $value . "</option>";
}
到
foreach ($subjectcodes as $key => $value) {
echo "<option value=" . $key . ">" . $value . "</option>";
}
答案 2 :(得分:1)
Foreach迭代数组,这意味着当你使用key方法时,&#34; current&#34;数组元素是foreach循环的下一个元素。你的代码并没有很好地构建你想要的东西。
请改用:
foreach ($subjectcodes as $key => $value) {
echo "<option value=" . $key . ">" . $value . "</option>";
}
注意:除非你想在foreach循环中更改数组元素的值,否则不需要使用&amp; $ value。
答案 3 :(得分:1)
完成有关将引用用作foreach循环变量的信息的注释:
来自http://php.net/manual/en/control-structures.foreach.php:
$ value的引用和最后一个数组元素保持不变 foreach循环。建议通过unset()来销毁它。
因此,如果您决定使用引用作为foreach变量,则在foreach之后取消设置。
foreach ($subjectcodes as &$value)
{
}
unset($value)