比较2个数组时,检查的PHP复选框无法正常工作

时间:2016-11-07 17:46:51

标签: php

我尝试比较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>';
}

enter image description here

从屏幕截图中可以看出,正确的结果应该是右侧的value1,value3和value4。但是,我的php输出是屏幕截图的左侧

任何人都知道什么是错的?

2 个答案:

答案 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建议的那样