PHP FOREACH ARRAY问题

问题描述

| 这就是我所拥有的:
$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中的内容-我做错了什么?     

解决方法

in_array($prevtag,$arr)
正在检查数组
$arr
是否包含值
1,2,5
因此您可以执行以下操作:
$checked = in_array($key,explode(\',\',$prevtag)) ? \'\' : \'checked=\"checked\"\';
    ,在您的示例中,“ 6”是字符串而不是数组,因此无法在其上使用“ 7”。 因此,您可以尝试:
$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\";
}
    ,将ѭ6做成一个数组,然后执行类似的操作
$preArray=explode(\",\",$prevtag);

foreach ($arr as $key => $value) {
    $checked = in_array($key,$preArray) ? \'checked=\"checked\"\' : \'\';
    ...
}
    ,
$checked = strpos( $prevtag,(string)$key ) ? \'\' : \'checked=\"checked\"\';
$ prevtag是字符串而不是数组->
in_array()
将不适用     ,您正在检查\'1,5 \'是否在\'books \'或\'magazines \'等内部
$prevtag = array(1,5);
$checked = in_array($key,$prevtag) ? \'checked=\"checked\"\' : \'\'