【问题标题】:PHP get a value from array indexPHP从数组索引中获取一个值
【发布时间】:2014-10-28 07:51:58
【问题描述】:

我有这个字符串:

$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' : '') ?>

我想回显 'checked' 得到与我的 $hourData 相同值的复选框数组值。

我该怎么办?

【问题讨论】:

  • 我假设 $i 是小时。 'in_array($i, $hourData)' 将返回真/假。

标签: php html arrays


【解决方案1】:

只需跟进三元并使用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

【讨论】:

  • 是的,这解决了我的问题:D,我从没想过会这么简单,谢谢先生:D
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    <?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)' 将返回真/假。”

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-02-03
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 2016-03-20
        • 2018-03-28
        • 2021-06-24
        相关资源
        最近更新 更多