PHP从数组索引中获取值

时间:2014-10-28 07:51:58

标签: php html arrays

我有这个字符串:

$hours = '7, 8, 12';
$hourData = explode(', ', $hours);

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

array(3) {
    [0]=>
    string(1) "7"
    [1]=>
    string(2) "8"
    [2]=>
    string(2) "12"
}

我有这段代码:

<?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 } ?>

此代码:

<?php echo (isset($hourData[$i]) && $i == $hourData[$i] ? 'checked' : '') ?>

我希望 回复 &#39;选中&#39; 以获取与我的 $相同价值的复选框hourData 数组值。

我该怎么办?

4 个答案:

答案 0 :(得分:6)

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

<?php echo (in_array($i, $hourData) ? 'checked' : ''); ?>

很像这样:

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

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

第一次迭代:

$i = 0
(isset($hourData[$i]) && $i == $hourData[$i]
   ^ $hourData[$i]   AND  0 == $hourData[$i] // 7
      this does exist

答案 1 :(得分:1)

我假设你实际上想要的值不是索引。即检查$ i是否作为$ hourData数组中的值存在。

<?php
echo in_array($i, $hourData) ? 'checked' : ''
?>

答案 2 :(得分:1)

<?php for ($i=0; $i <= 23 ; $i++) { 
 if(in_array($i, $hourData){
     $checked = "checked";
 }else{
     $checked = "";
 }
?>
    <div class="fl">
        <input type="checkbox" name="limit_hour[]" value="<?php echo $i ?>" class="fl limit_hour" <?php echo $checked; ?>>
        <!-- ======================================================================== -->
        <span class="fl lmBox"><?php echo $i ?>:00 - <?php echo $i ?>:59</span>
    </div>  
<?php } ?>

这将设置已检查的值,如果有的话,它会将其留空,所以它可以正常工作。

正如我在评论中所述:“我认为$ i是小时.'in_array($ i,$ hourData)'将返回true / false。”

答案 3 :(得分:0)

在我看来,比较一个数组中是否包含一个值就足够了:

 <?php echo (in_array($i, $hourData)) ? 'checked="checked"' : ''); ?>