PHP FOREACH ARRAY问题

时间:2011-04-13 11:39:14

标签: php mysql arrays foreach

这就是我所拥有的:

$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中的那些 - 我做错了什么?

5 个答案:

答案 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"';