PHP从数组索引中获取值

jun*_*ior 1 html php arrays

我有这个字符串:

$hours = '7, 8, 12';
$hourData = explode(', ', $hours);
Run Code Online (Sandbox Code Playgroud)

如果我var_dump($hourData),它返回:

array(3) {
    [0]=>
    string(1) "7"
    [1]=>
    string(2) "8"
    [2]=>
    string(2) "12"
}
Run Code Online (Sandbox Code Playgroud)

我有这个代码:

<?php for ($i=0; $i <= 23 ; $i++) { ?>
    <div class="fl">
        <input type="checkbox" name="limit_hour[]" value="<?php echo $i ?>" class="fl limit_hour"
        <!-- ======================================================================== -->
        <?php echo (isset($hourData[$i]) && $i == $hourData[$i] ? 'checked' : '') ?>>
        <!-- ======================================================================== -->
        <span class="fl lmBox"><?php echo $i ?>:00 - <?php echo $i ?>:59</span>
    </div>  
<?php } ?>
Run Code Online (Sandbox Code Playgroud)

这段代码:

<?php echo (isset($hourData[$i]) && $i == $hourData[$i] ? 'checked' : '') ?>
Run Code Online (Sandbox Code Playgroud)

我想呼应 "检查"了谁得到相同的值,我的复选框$ hourData数组值.

我该怎么办?

Kev*_*vin 6

只需跟进三元并使用即可 in_array()

<?php echo (in_array($i, $hourData) ? 'checked' : ''); ?>
Run Code Online (Sandbox Code Playgroud)

很像这样:

<input 
    type="checkbox" 
    name="limit_hour[]" 
    value="<?php echo $i; ?>" 
    class="fl limit_hour"
    <?php echo (in_array($i, $hourData) ? 'checked' : ''); ?> 
/>
Run Code Online (Sandbox Code Playgroud)

使用$hourData[$i]没有意义,因为它们永远不会匹配.

第一次迭代:

$i = 0
(isset($hourData[$i]) && $i == $hourData[$i]
   ^ $hourData[$i]   AND  0 == $hourData[$i] // 7
      this does exist
Run Code Online (Sandbox Code Playgroud)