我有两个数组从服务器回复:
我需要显示所有过敏症的复选框列表,并将其他数组中存在的那些标记为已选中。
第二个数组可以是null
。
如何在不将结果乘以array1 * array2
的情况下遍历两个数组。
此代码导致8个复选框输入,因为所有过敏的列表是4,产品只有2个过敏,所以循环执行8次!
<?php
$checked ="";
if (isset($allergies)) { // array of all allergies
foreach ($allergies as $key => $value) {
if(isset ($productAllergies)) { // array of product allergies
foreach ($productAllergies as $productkey => $prodValue) {
// echo 'product allergy'. $prodValue['allergy_id'] .' general'.$key ;
if( $prodValue['allergy_id'] ==$key )
$checked ='checked';
else
$checked ='';
?>
<?php
} // foeach close
} // if close ?>
<input type="checkbox" name="allergy[]" value="<?php echo $key; ?>" <?php echo $checked; ?>/>
<label>
<?php echo $value; ?>
</label>
<?php } // foreach close
} // if close
?>
有人可以帮助澄清我应该遵循的逻辑,以显示带有选中值的复选框列表。
答案 0 :(得分:0)
如果我理解正确的格式,这可以起作用:
<?php
$checked ="";
if (isset($allergies)) { // array of all allergies
foreach ($allergies as $key => $value) {
if(isset ($productAllergies)){ // array of product allergies
$k2 = array_search($key, $productAllergies);
if (!empty($productAllergies[$k2])) {
$checked = 'checked';
}
}
}
}
?>