не может сопоставить переменную со значением в массиве - PullRequest
1 голос
/ 24 октября 2011

У меня проблемы с сопоставлением какого-либо ввода формы со значением в массиве.

Вот мой код:

if(isset($_POST['city'])){

$city = mysql_real_escape_string($_POST['city']);
$cities = array('Alamance','Archdale','Arlington');
$count = count($cities);
for($x=1; $x<=$count; $x++){
    if($city === $cities[$x]){ # match } 
        else{ # no match, set error }
}

} else{ # city is not set, set error }

if(isset($_POST['county'])){
# county is set. make sure that it is actually a triad county

$county = mysql_real_escape_string($_POST['county']);
$counties = array('Alamance','Davidson','Davie');
foreach($counties AS $x){
    if($county != $x){ # no match, set error } 
        else{ # match }
}
} else { # county is not set, set error }

Все, что я хочу сделать, это сопоставить город ввода илисчитать один в соответствующем массиве или установить ошибку, если она не совпадает.Я делал это много раз прежде, поэтому я не могу понять, почему это здесь не работает, но я думаю, что, может быть, я просто смотрю на это слишком сильно и мне нужна дополнительная пара глаз.

Может кто-нибудь проверить этот код и посмотреть, где я ошибаюсь?

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Эта строка неверна:

for($x=1; $x<=$count; $x++){

должно быть:

for($x=0; $x<$count; $x++){

и я также предлагаю изменить это:

if($county != $x)

в это:

if($county !== $x)
0 голосов
/ 24 октября 2011

Я предлагаю вам взглянуть на функцию in_array. Пример:

if (isset($_POST['city']))
{
    $city = $_POST['city'];
    $cities = array('Alamance','Archdale','Arlington');
    if (in_array($city, $cities))
    {
        # match 
    } 
    else
    {
        # no match, set error
    }
}
else
{
    # city is not set, set error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...