avianrand Ответов: 1

Php strpos работает не так как ожидалось


От этого у меня сейчас глаза на лоб лезут. Это должно сработать, но это не так. Я сохраняю значения (названия округов), которые пользователь выбрал из многозначного выбора, в строке, разделенной запятыми. Затем, когда форма отправлена и отклонена, я использую эту строку, чтобы "выбрать" те, которые были выбраны ранее.

Что я уже пробовал:

Вот мой тестовый код:
<?php 
    echo 'Previous selection: '.$saved_counties;
    echo '<br /><br />List of all counties:';
    foreach ($counties as $one_county):
        echo '<br />'.$one_county['County'];
        if (strpos($saved_counties, $one_county['County'])) {
            echo ' (**** IN PREVOUS SELECTION ***)';
        }
    endforeach;
?>

Когда я запускаю код, это то, что я получаю:

Предыдущий выбор: Барага,Барри,Бэй

Список всех округов:
Алькона
Элджер
Аллеган
Альпена
Антрим
Аренак
Барага
Барри (**** в предыдущем выборе ***)
Залив (**** в предыдущем выборе ***)
Бензи
Берриен
Ветка
Калхун
Касс
Шарлевуа
Чебойган
Чиппева
Клэр
Клинтон
Кроуфорд
Дельта
Дикинсон
Итон
Муравей

Почему он пропускает "Барагу"? Не имеет значения, какую группу я выберу. Он всегда пропускает первый из них в коде "foreach". Я пытался:
strpos($saved_counties, $one_county['County']) >= 0

Это привело к тем же результатам.

Я тоже пытался:
strpos($saved_counties, $one_county['County']) > 0

Это привело к повторному отбору всех из них.

$counties-это массив, в котором хранятся все 83 округа Мичигана. $saved_counties-это просто строка, разделенная запятыми, в которой хранится предыдущий выбор пользователя.

1 Ответов

Рейтинг:
1

avianrand

Ладно, я все понял. Это делает трюк:

strpos($saved_counties, $one_county['County'])!==false


Dave Kreskowiak

Что вы делаете с этим списком названий округов Мичиган?