【问题标题】:How do you check if the time exist in two array if they do disable them from option如果它们确实从选项中禁用它们,您如何检查时间是否存在于两个数组中
【发布时间】:2020-03-07 08:12:00
【问题描述】:

如果时间存在,我正在尝试禁用一个选项

我不确定哪种方法是正确的 每次我做任何检查时 array_key_exists 数组合并 内爆

我收到以下错误: date() 期望参数 2 是给定的整数数组 预期类型“数组”。找到 'int|float'

$notAvailable = ["9:00", "9:15", "09:30"];

    // Header
    echo '<select name="time" class="time">';

    $start = strtotime('09:00');
    $end = strtotime('18:00');
    for ($calltime = $start; $calltime <= $end; $calltime = $calltime + 15 * 60) {
        printf('<option value="%s">%s</option>', date('H:i', $calltime), date('g:i a', $calltime));
    }
    // disabled="disabaled
    echo '</select>';


$notAvailable = ["9:00", "9:15", "09:30"];

$start = strtotime('09:00');
$end = strtotime('18:00');

如果["9:00", "9:15", "09:30"] 与循环匹配,我想禁用选择选项

如果我这样做了

for ($calltime = $start; $calltime <= $end; $calltime = $calltime + 15 * 60) { if ($notAvailable == $calltime) { # code... printf('<option value="%s">%s</option>', date('H:i', $calltime), date('g:i a', $calltime)); } }

$result = array_merge($calltime, $notAvailable); if ($result) { # code... printf('<option value="%s">%s</option>', date('H:i', $calltime), date('g:i a', $calltime)); } 

【问题讨论】:

  • 运行给定的代码不会对我产生任何错误。
  • @PatrickQ 你如何检查 $notAvailable 这是我的问题在 for 循环中,如果我添加 if 语句来检查 $notAvailable 和 $calltime 我得到错误
  • 我完全按照提供的方式运行代码。如果这不是为您产生错误的代码,请提供该代码。向我们展示不会给您带来问题的代码对任何人都没有帮助。
  • for ($calltime = $start; $calltime %s', date('H:i', $calltime), date('g:i a', $calltime));如果我这样做,我将一无所获
  • $notAvailable == $calltime 您正在尝试检查数组 == int/float?也许您正在寻找 in_array php 函数?

标签: php html arrays date int


【解决方案1】:

您可以进行以下修改,然后您就可以开始了,

修改 1$notAvailable 变量前有零(0)值,因为您的 for 循环会生成时间值,例如“09:00”、“09:15”、“09:30”不是“9:00”、“9:15”、“09:30”

修改 2:使用 in_array() 函数检查它是否是数组的索引,然后在 选项 上设置 disabled="disabled",否则只需使用它。

修改 3:将时间值赋给变量以使其看起来更清晰。(可选

<?php
// Header
$notAvailable = ["09:00", "09:15", "09:30"];
echo '<select name="time" class="time">';
$start = strtotime('09:00');
$end = strtotime('18:00');
for ($calltime = $start; $calltime <= $end; $calltime = $calltime + 15 * 60) {
    $time = date('H:i', $calltime);
    $time_with_am_pm = date('g:i a', $calltime);
    if(in_array($time,$notAvailable)){
        printf('<option value="%s" disabled="disabled">%s</option>', $time,$time_with_am_pm);
    }else{
        printf('<option value="%s">%s</option>', $time,$time_with_am_pm);
    }   
}
// disabled="disabaled
echo '</select>';
?>

【讨论】:

  • 您可能应该解释您的代码,以便 OP 真正理解和学习,而不是仅仅依靠复制/粘贴。
  • @jibingeorge meta.stackoverflow.com/a/253163/1505169(在这种情况下,
  • @AlwaysSunny 我还有一个问题,所以 $notAvailable 只是今天的时间,如果我点击明天的日期,我该如何检查,例如,我不希望禁用时间是可能的跨度>
  • @Always Sunny 我有一个问题,当我点击选项时,是否可以从当前时间提前 4 小时隐藏?
  • 是的,应该有可能,在这种情况下,您可以在 if 中添加另一个条件
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 2021-05-13
  • 2018-02-03
  • 2019-04-26
相关资源
最近更新 更多