这是我的代码:
$field = 0;
echo "<table border='1'>";
$inlcude_copy = $inlcude;
echo "<tr>";
foreach ($ad as $post)
{
if ($field < 3)
{
echo "<td>$post</td>"; //first three values are displayed in the
$field++; // first row
}
if($field == 3) //closes first row
{
echo "</tr>";
$field++;
//array_splice($post, 2);
}
if ($field > 3) //rest of $post values get added in a single column
{
$in = array_shift($inlcude_copy); //acts as another foreach loop to display
//second array in seperate column
echo "<tr><td>$post</td><td>$in</td></tr>";
}
}
echo '</table>';
问题所在:$ ad数组中的第三个元素显示在第一行的第三列和第二行的第一列中。但是,在检查数组中的元素时,这就是我得到的:
Array(
[0]=> Chem
[1]=> apple
[2]=> fixed
[3]=> orange
[4]=> fish )
正如你所看到的,第三个元素(固定)只在数组中的一个位置买入在我的表中显示两次。我尝试过使用array_splice($ post,2),但是没有用。我绝对难过。任何帮助将不胜感激。
答案 0 :(得分:0)
仔细追踪您的代码。执行第一个if语句后。 $field
中存储的值是多少?提示:第一次执行后,$field
等于1. 第三次迭代的内容是什么? 3.执行第一个if-statment后, second if语句中的布尔表达式的结果是什么?提示:$field == 3
与3 == 3
相同,这是真的。因此,if语句也是在foreach
循环的第三次迭代中执行的。
答案 1 :(得分:0)
您使用IF stament增加$field
值。这导致多个IF被验证为真的情况($ field = 2 AND $ field = 3`)
您可以修改代码,以便仅增加$ field一次并使用IF..ELSE语句。
foreach ($ad as $post)
{
if ($field < 3)
{
echo "<td>$post</td>"; //first three values are displayed in the
}
elseif($field == 3) //closes first row
{
echo "</tr>";
}
else // if ($field > 3) rest of $post values get added in a single column
{
$in = array_shift($inlcude_copy); //acts as another foreach loop to display
//second array in seperate column
echo "<tr><td>$post</td><td>$in</td></tr>";
}
$field++;
}