我的循环问题显示结果

时间:2013-10-14 12:42:08

标签: php for-loop foreach mysqli

$array_of_time = array ();
$start_time    = strtotime ("$app_date 07:00");
$end_time      = strtotime ("$app_date 22:00");
$mins  = 04 * 60;

while ($start_time <= $end_time)
{
   $array_of_time[] = date ('h:i a', $start_time);
   $start_time += $mins;
}

echo "<div style='width:700px' class='time_slot_div'>";
echo "<p class='time_slot_p'> Time Slot :</p>";

foreach($array_of_time as $key=>$value)
{

    for($i = 0; $i < count($app_data); $i++)
    {
        $book_time=$app_data[$i]["appointment_time"];
        if($value==$book_time)
        {
           echo "<a  class='time_slot_a_book'>$value</a>&nbsp;";    
        } else {
           echo "<a href='#' onclick='get_time_value(\"$value\");' class='time_slot_a'>$value</a>&nbsp;";
        }
    }
}

echo "</div>";

这里foreach循环可以运行尽可能多的时间以及循环,但我想显示与foreach值和循环值不匹配的链接。

foreach循环值就像7:20 am不是来自数据库,但for循环值就像早上7:20来自数据库所以如果早上7:20 == 7:20 am那么它运行的if语句工作正常,但问题是,如果我在for循环中得到2个值,它运行2次。它应该只运行我的div一次。

1 个答案:

答案 0 :(得分:0)

使用数组存储已显示的项目。

<?php

foreach($array_of_time as $key=>$value)
{
    $tag_list = array();
    for($i = 0; $i < count($app_data); $i++)
    {
        $book_time=$app_data[$i]["appointment_time"];

        // shown, skip
        if (isset($tag_list[$book_time]))
        {
            continue;
        }

        // mark as show
        $tag_list[$book_time] = 1;

        if ($value == $book_time)
        {
            echo "<a  class='time_slot_a_book'>$value</a>&nbsp;";
        }
        else
        {
            echo "<a href='#' onclick='get_time_value(\"$value\");' class='time_slot_a'>$value</a>&nbsp;";
        }
    }
}