我有这个字符串:
$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 数组值。
我该怎么办?
答案 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"' : ''); ?>