我尝试比较2个数组,然后检查复选框是否存在常见值。
编码
$array_1[]="value1";
$array_1[]="value2";
$array_1[]="value3";
$array_1[]="value4";
$array_1[]="value5";
$array_1[]="value6";
$array_1[]="value7";
$array_1[]="value8";
$array_2[]="value1";
$array_2[]="value3";
$array_2[]="value4";
for($i=0;$i<count($array_1);$i++){
$checked = isset($array_2[$i])? 'checked' : '';
echo '<input type="checkbox" ' . $checked .' name="zzz[] "value="'.$array_1[$i].'"> '.$array_1[$i].'<br>';
}
从屏幕截图中可以看出,正确的结果应该是右侧的value1,value3和value4。但是,我的php输出是屏幕截图的左侧
任何人都知道什么是错的?
答案 0 :(得分:1)
value2数组初始化错误。它应该是:
$array_2[1]="value1";
$array_2[3]="value3";
$array_2[4]="value4";
答案 1 :(得分:1)
由于您正在处理值而不是键,因此您应该使用in_array
检查
for($i=0;$i<count($array_1);$i++){
$checked = in_array($array_1[$i], $array_2) ? 'checked' : '';
echo '<input type="checkbox" ' . $checked .' name="zzz[] "value="'.$array_1[$i].'"> '.$array_1[$i].'<br>';
}
或者,您可以将键设置为相同,如Nadir Latif建议的那样