数组显示的值在表中两次

时间:2014-09-01 06:53:30

标签: php arrays

这是我的代码:

$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),但是没有用。我绝对难过。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

仔细追踪您的代码。执行第一个if语句后。 $field中存储的值是多少?提示:第一次执行后,$field等于1. 第三次迭代的内容是什么? 3.执行第一个if-statment后, second if语句中的布尔表达式的结果是什么?提示:$field == 33 == 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++; 
}