2014-04-07 3 views
0

У меня есть сценарий, как этотсимвол и десятичное число верно в PHP

$number = range(0, 9); 

, когда у меня есть условие, как этот

if (in_array('@', $number) === true) { 
    echo "true"; 

}else "false"; 

и выход:

true 

и мой вопрос почему символы одинаковы с любым числом в массиве $ number ?? Я хочу, чтобы символы просто символы не номера.

пример, который я хочу, как это

if (in_array('@', $number) === true) { 
    echo "true"; 

}else "false"; 

выход:

false 

ответ

5

От documentation for in_array():

Если третий параметр строги установлен в TRUE то функция in_array() будет также проверить типы иглы в стоге сена.

В PHP, отбрасывая любую строку, которая не начинается с числа имеет значение 0. 0 существует в массиве, так in_array() возвращает истину. Если вы не хотите, чтобы это произошло, установите третий параметр для in_array() в true, поэтому он выполняет сильное сравнение (эквивалентно ===) и также рассматривает типы.

if (in_array('@', $number, true) === true) { 
    echo "true"; 
} 
else { 
    echo "false"; 
} 

Выход:

false 
+0

ого спасибо за ответ. и если у меня есть условие вроде этого, получится true, потому что в массиве @number будет 0. и если при сравнении каких-либо символов. –

Смежные вопросы