2014-10-28 2 views
1

У меня есть эта строка:PHP получить значение из индекса массива

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

если I 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

Я получаю $ i - это час. 'in_array ($ i, $ hourData)' вернет true/false. –

ответ

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

+0

@junior рад, что это помогло – Ghost

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

это установит проверенное значение, если есть еще оставляет его пустым, поэтому он прекрасно работает.

Как я сказал в комментарии: «Я получаю $ i - это час». In_array ($ i, $ hourData) 'вернет true/false. "

Смежные вопросы