2014-10-28 50 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。」