首页 > 解决方案 > 如果它们确实从选项中禁用它们,您如何检查时间是否存在于两个数组中

问题描述

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

每次我做任何检查时,我都不确定哪种方法是正确的,如 array_key_exists array_merge implode

我收到了这些错误: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)); } 

标签: phphtmlarraysdateint

解决方案


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

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

修改 2in_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>';
?>

推荐阅读