【问题标题】:I have an issue with my loops to show the result我的循环显示结果有问题
【发布时间】:2013-10-22 00:49:59
【问题描述】:
$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 循环可以和 for 循环一样多次运行,但我想显示与 foreach 值和 for 循环值不匹配的链接。

foreach 循环值(如上午 7:20)不是来自数据库,但 for 循环值(如上午 7:20)来自数据库,因此如果上午 7:20==7:20 则它运行的 if 语句工作正常,但问题是如果我在 for 循环中得到 2 个值,它会运行 2 次。它应该只运行我的 div 一次。

【问题讨论】:

  • 你试过在 if 中使用 break 语句吗?
  • 说实话,我不太明白这个问题。
  • #vaibhavmande 我应该在哪里使用 break 语句?
  • #Amal 我只想得到这两个循环的一个结果。这里的 foreach 循环显示了今天上午 07:00 到晚上 10:00 的所有时间段。每 4 分钟间隔,for 循环的值介于这两次之间假设 for 循环的时间为上午 7:28,那么上午 7:28 的 foreach 循环值的结果将没有锚标记。
  • 我认为你应该开始使用一些逗号。

标签: php for-loop foreach mysqli


【解决方案1】:

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

<?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;";
        }
    }
}

【讨论】:

  • Thanx srain 但它只显示 2 个值,即 7:00 am 7:00 am 就是这样。
  • 您只希望值== 只显示一次,而另一个在 for 循环中多次显示?
  • 是的,我想在 if 语句中显示 == 值,其余的在 else 语句中。
  • 我更新了答案,$book_time 重复时会跳过。现在呢?
  • 07:00 am 07:00 am 07:04 am 07:04 am 07:08 am 07:08 am 07:12 am 07:12 am 07:16 am 07:16 am 07:上午 20 点 上午 7:20 上午 07:24 上午 7:24 上午 07:28 上午 07:28 上午 07:32 上午 7:32 上午 07:36 上午 07:36 上午 07:40 上午 07:40 上午 07:44上午 07:44 上午 07:48 上午 07:48 上午 7:52 上午 07:52 上午 07:56 上午 07:56 上午 08:00 上午 08:00 上午 8:04 上午 8:04 上午 08:08 上午 08:上午 8 点 上午 8 点 12 点 上午 8 点 12 分 上午 8 点 16 分 上午 8 点 16 分 上午 8 点 20 分 上午 8 点 20 分 上午 8 点 24 分 上午 8 点 24 分 上午 8 点 28 分 上午 8 点 28 分 上午 8 点 32 分 上午 8 点 32 分08:36 am 08:36 am 08:40 am 08:40 am 08:44 am 08:44 am 08:48 它仍然重复值:(
猜你喜欢
  • 1970-01-01
  • 2022-07-06
  • 2012-04-08
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 2014-12-23
相关资源
最近更新 更多