Проблема PHP FOREACH ARRAY - PullRequest
       2

Проблема PHP FOREACH ARRAY

1 голос
/ 13 апреля 2011

Вот что у меня есть:

$prevtag = "1,2,5";

$arr;
$arr["1"] = "BOOKS";
$arr["2"] = "MAGAZINES";
$arr["3"] = "PAMPHLETS";
$arr["4"] = "CD'S";
$arr["5"] = "DVD'S";

И мне нужно проверить, существует ли какой-либо из $ prevtag в $ arr, а затем установить флажки echo 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 ]

2 голосов
/ 13 апреля 2011

В вашем примере $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 голос
/ 13 апреля 2011

Создайте $prevtag массив и сделайте что-то вроде этого

$preArray=explode(",",$prevtag);

foreach ($arr as $key => $value) {
    $checked = in_array($key,$preArray) ? 'checked="checked"' : '';
    ...
}
1 голос
/ 13 апреля 2011
$checked = strpos( $prevtag, (string)$key ) ? '' : 'checked="checked"';

$ prevtag - это строка, а не массив -> in_array() не будет применяться

0 голосов
/ 13 апреля 2011

in_array($prevtag,$arr) проверяет, содержит ли массив $arr значение 1,2,5

так что вы можете сделать это:

$checked = in_array($key, explode(',', $prevtag)) ? '' : 'checked="checked"';
0 голосов
/ 13 апреля 2011

вы проверяете, находится ли «1,2,5» внутри «книг» или «журналов» и т. Д.

$prevtag = array(1,2,5);
$checked = in_array($key, $prevtag) ? 'checked="checked"' : ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...