是值在2个数组键之间

时间:2020-05-12 22:27:07

标签: php arrays

我对foreach循环中的if语句有疑问。

<?php
$time_code = 2; 

$times = array(
    '2' => '10:00',
    '4' => '12:00',
    '6' => '14:00',
);

foreach($times as $code => $time){
    //if $code >= time_code && $time_code < the next array_key
}
?>

我的意思是,如果$ time_code = 2 echo 10:00但如果$ time_code是4或5 echo 12:00。

1 个答案:

答案 0 :(得分:1)

假设您要检查键是否等于或等于+一,则可以检查条件,以查看变量是否等于或等于+一。因此它看起来类似于以下内容...

说我们有一个选择器,它使我们可以选择24小时制,以1小时为增量,您想获得该时间的代码。因此,如果我们有一个以2为增量设置这些值的数组,则可以编写条件以查看键是否等于或等于+ 1。

现在我们有一个类似html的表单:

<form action="" method="post">
   <div>Choose a time 
      <select name="time_code" id="time_code">
        <option value="2">2:00</option>
        <option value="3">3:00</option>
        <option value="4">4:00</option>
        <option value="5">5:00</option>
        <option value="6">6:00</option>        
        <option value="7">7:00</option>
        <option value="8">8:00</option>
        <option value="9">9:00</option>
        <option value="10">10:00</option>
        <option value="11">11:00</option>
        <option value="12">12:00</option>
        <option value="13">13:00</option>
        <option value="14">14:00</option>
        <option value="15">15:00</option>
        <option value="16">16:00</option>        
        <option value="17">17:00</option>
        <option value="18">18:00</option>
        <option value="19">19:00</option>
        <option value="20">20:00</option>        
        <option value="21">21:00</option>
        <option value="22">22:00</option>
        <option value="23">23:00</option>
        <option value="24">24:00</option>

      </select>
   </div>
   <input type="submit" name="submit" value="submit">
</form>

我们获得发布值,然后使用if语句将条目与数组进行比较:

$output = null;
// convert to integer for strict comparison or use == in conditional
$time_code = (int)$_POST['time_code']; 

$times = array(
    '0' => '2:00',
    '2' => '4:00',
    '4' => '6:00',
    '6' => '8:00',
    '8' => '10:00',
    '10' => '12:00',
    '12' => '14:00',
    '14' => '16:00',
    '16' => '18:00',
    '18' => '20:00',
    '20' => '22:00',
    '22' => '24:00'
);
$msg = null;
foreach($times as $code => $time){
  if($time_code === $code || $time_code === $code + 1){
    $msg = $time;
  }else{
      $msg = "error";
    }
}
if($msg === 'error'){
  $msg = "Sorry there is no time slot for that code, please check your entry!";
}

HTML:

<div>
  <?=$msg?>
</div>

输出:

5:00 selected will output -> CODE: 4
2:00 selected will output -> CODE: 2
17:00 selected will output -> CODE: 16
23:00 selected will output -> CODE: 22
24:00 selected will output -> CODE: 24

*因为我们可以控制输入值的选择,所以错误永远不会触发...如果您使用文本输入或允许用户输入不在我们参数范围内的值的输入,则错误可能会触发。