Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP显示数组键高出1个数字_Php_Mysql - Fatal编程技术网

PHP显示数组键高出1个数字

PHP显示数组键高出1个数字,php,mysql,Php,Mysql,我想获取显示在页面上的数组的所有键 现在我有这个: $subjectcodes[1] = "Mathematics"; $subjectcodes[2] = "Physics"; $subjectcodes[3] = "Charlie"; $subjectcodes[4] = "Chemistry"; $subjectcodes[5] = "Biology"; $subjectcodes[6] = "English"; $subjectcodes[7] = "Dutch"; $subjectco

我想获取显示在页面上的数组的所有键

现在我有这个:

$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>
正如你所看到的,所有的键都比假设的高一个数。最后一个选项甚至没有钥匙

有人知道这是为什么吗?我如何解决这个问题

谢谢

试试看:

foreach ($subjectcodes as $key=>$value) {
    //$key = key($subjectcodes);
    echo "<option value=" . $key . ">" . $value . "</option>";
}

Foreach迭代数组,这意味着当您使用key方法时,当前数组元素是Foreach循环中的下一个元素。您的代码没有很好地为您要完成的内容构建

改用这个:

foreach ($subjectcodes as $key => $value) {
    echo "<option value=" . $key . ">" . $value . "</option>";
}

注意:除非您想在foreach循环内更改数组元素的值,否则不需要使用&$value。

您可以在中使用key和value,因此更改:

foreach ($subjectcodes as &$value) {
    $key = key($subjectcodes);
    echo "<option value=" . $key . ">" . $value . "</option>";
}


有关将引用用作foreach循环变量的信息的完整说明:

发件人:

$value和最后一个数组元素的引用即使在 foreach循环。建议通过取消设置将其销毁

因此,如果您决定将引用用作foreach变量,则必须在foreach之后取消设置它

foreach ($subjectcodes as &$value)
{
}
unset($value)

这是一种奇怪的写作方式@您还可以说出原因吗?选择foreach循环变量作为引用,并从循环内部获取密钥。标准方法如@Niloy Shaa所说。foreach$my_array as$key=>$value如果答案对您有帮助,请接受。我会的,但我必须等待11分钟
foreach ($subjectcodes as &$value)
{
}
unset($value)