2014-10-28 141 views
1

我有这个字符串:PHP得到数组索引值

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

我想呼应“检查”对于谁得到了相同的值,我$ hourData数组值的复选框。

我该怎么办?

+1

我asume $我是小时。 'in_array($ i,$ hourData)'会返回true/false。 – 2014-10-28 07:54:59

回答

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 
+0

是的,这解决了我的问题:D,我从来没有想过会这么简单,谢谢先生:D – junior 2014-10-28 08:12:38

+0

@junior很高兴这个帮助 – Ghost 2014-10-28 08:12:48

0

在我看来,如果一个值包含在一个阵列比较充足:

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

我假设你真正想要的值不是指数。即检查$ i是否存在$ hourData数组中的值。

<?php 
echo in_array($i, $hourData) ? 'checked' : '' 
?> 
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 } ?> 

这将设置选中的值,如果有其他人离开它空的,所以它工作正常。

正如我在评论中所说:“我asume $ i是小时。'in_array($ i,$ hourData)'会返回true/false。”