【问题标题】:display difference between array and object in php在php中显示数组和对象之间的差异
【发布时间】:2019-10-02 17:31:54
【问题描述】:

我正在开发预约应用程序。我已将计划保存在数据库中,其中包含一周中每一天的 start 和 end 值。选择日期后,将显示一个下拉菜单,其中包含该日期以 15 分钟为间隔的时间表。这是我的代码中的一个 sn-p:

$begin = new DateTime("$start");
$end   = new DateTime("$end");
$interval = DateInterval::createFromDateString('15 min');
$times    = new DatePeriod($begin, $interval, $end);

<select name="time">
<option value="">Select Time</option>
foreach ($times as $time) { ?> <option value=" <?php echo $time->format('H:i'), "\n";?>">
<?php echo $time->format('H:i'), "\n"
     ;
}
?> </option>

例如,我还从选定日期的约会数据库查询中获得了另一个开始时间数组

SELECT `stime` FROM `book` WHERE DOV="2019-09-19" 

返回值

13:00:00
14:00:00
15:30:00

在运行 foreach 循环时,如何将我的第一个对象中的项目与此数组进行比较,以便在下拉列表中不显示这些时间?

【问题讨论】:

  • 当用户提交到服务器时,是否需要将&lt;select&gt;&lt;/select&gt; 中的值与sql 中的数组进行比较?
  • 不,我正在比较来自 sql 查询 $query ="SELECT * FROM book WHERE DOV = '" 的值。 $_POST["dov"] 。 "'";

标签: php arrays foreach


【解决方案1】:

foreach 循环中,您可以检查日期字符串是否是SQL 调用返回的数组中的值之一。只有当它 not 在数组中时,您才会echo 结果。为此,我建议使用in-array() 函数。

下面是一个例子。您可能需要做一些小调整才能让它在您的代码中运行。

// Before this, you'll need to initialize the array of returned values
// from your DB. In my example, I'll use $time_array for the array.
foreach ($times as $time) {
    $time_string = $time->format('H:i');
    if (!in_array($time_string, $time_array)) {
        echo '<option value="{$time_string}">';
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2012-08-23
    • 2011-08-20
    • 2010-11-28
    • 2020-08-09
    相关资源
    最近更新 更多