这就是我所拥有的:
$prevtag = "1,2,5";
$arr;
$arr["1"] = "BOOKS";
$arr["2"] = "MAGAZINES";
$arr["3"] = "PAMPHLETS";
$arr["4"] = "CD'S";
$arr["5"] = "DVD'S";
我需要检查$ arr中是否存在任何$ prevtag然后回显5个复选框:
foreach ($arr as $key => $value) {
$checked = in_array($prevtag,$arr) ? '' : 'checked="checked"';
echo "<input name=\"txtTags".$key."\" type=\"checkbox\" id=\"txtTags".$key."\" value=\"on\" $checked />\n";
echo "<label for=\"txtTags".$key."\">".$value."</label>\n";
}
但是我得到了全部检查而不只是$ prevtag中的那些 - 我做错了什么?
答案 0 :(得分:2)
在您的示例中,$prevtag
是一个字符串而不是数组,因此您无法在其上使用in_array()
。
所以你可以尝试:
$prevtag = explode(',', $prevtag);
然后:
foreach ($arr as $key => $value) {
$checked = in_array($key, $prevtag) ? '' : 'checked="checked"';
echo "<input name=\"txtTags".$key."\" type=\"checkbox\" id=\"txtTags".$key."\" value=\"on\" $checked />\n";
echo "<label for=\"txtTags".$key."\">".$value."</label>\n";
}
答案 1 :(得分:1)
$checked = strpos( $prevtag, (string)$key ) ? '' : 'checked="checked"';
$ prevtag是字符串而不是数组 - &gt; in_array()
不适用
答案 2 :(得分:1)
让$prevtag
成为一个数组并执行类似的操作
$preArray=explode(",",$prevtag);
foreach ($arr as $key => $value) {
$checked = in_array($key,$preArray) ? 'checked="checked"' : '';
...
}
答案 3 :(得分:0)
您正在检查“1,2,5”是否在“书籍”或“杂志”等内部
$prevtag = array(1,2,5);
$checked = in_array($key, $prevtag) ? 'checked="checked"' : ''
答案 4 :(得分:0)
in_array($prevtag,$arr)
正在检查数组$arr
是否包含值1,2,5
所以你可以这样做:
$checked = in_array($key, explode(',', $prevtag)) ? '' : 'checked="checked"';