以下代码(php)的错误是什么


Whats the error in following code (php)

<?php
foreach($menu_names as $menu_name){
$i=0;
echo "<li><a href='?subj=" .$subjects_ids[$i]. " '>".$menu_name."</a></li>";
$i++;
}
?>

$subjects_ids是一个包含 123 三个值的数组。但是在HTML中创建的链接仅包含所有三个$menu_name?subj=3。第一个$menu_name应该有subj=1,第二个应该有2,第三个应该有3

$i=0;
foreach($menu_names as $menu_name){
    echo "<li><a href='?subj=" .$subjects_ids[$i]. " '>".$menu_name."</a></li>";
    $i++;
}

$i=0;放在循环外。

解释:

当您$i将变量放在 foreach 循环中并将其值设置为 0 时,每次循环数据时,值 $i 都将设置为 $i=0;因此您应该将其放在 foreach 循环之外。

您每次在循环中都设置 $i = 0。

$i=0;
foreach($menu_names as $menu_name){
  echo "<li><a href='?subj=" .$subjects_ids[$i]. " '>".$menu_name."</a></li>";
  $i++;
}

是更好的方法。

<?php
$i=0;
foreach($menu_names as $menu_name){
echo "<li><a href='?subj=" .$subjects_ids[$i]. " '>".$menu_name."</a></li>";
$i++;
}
?>

您已经在循环中初始化了$i变量,它应该在循环开始之前初始化,因此其值保持不变并在所有 A 标签中添加 id 3

您在每次迭代时初始化$i var,使其始终指向索引为 0 的元素。只需删除

$i=0;