是什么错误在下面的代码(PHP)

时间:2012-04-26 13:21:12

标签: php foreach

<?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中创建的链接仅包含所有三个?subj=3的{​​{1}}。第一个$menu_name应该有$menu_name,第二个应该有subj=1,第三个应该有2

4 个答案:

答案 0 :(得分:2)

$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循环之外。

答案 1 :(得分:2)

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

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

是一种更好的方式。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

$i=0;