[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: if - диапазон условий
Страницы: 1, 2
ilmel
Всем привет. Новичок, потому прошу не пинать :)
Разбираю детально выражение if
Попробовал задать диапазон условий в if :

<?php
$a = 5;

if ($a>1 and $a<10)
{ echo "Переменная \$a больше одного, но меньше 10";}

?>

Но это работает только, если значение $a попадает в диапазон.
Если не попадает - исчезает все ( ошибка)
Вообще , я не знаю ( и не нашел пока нигде) , можно ли так вообще писать :)), это так сказать, разведка боем user posted image
Попробовал вот так :
 
<?php

$a=2;

if ($a>= 1)

{
if ($a<10)

{echo "Переменная \$a больше 1 , но меньше 10";}
}

else
{ echo "Переменная \$a не соответствует условиям ";}

?>

== все работает. Получается, что задать диапазон в условие if можно только вложенной конструкцией ? Как еще можно ? А 1 вариант - так нельзя делать ?

Благодарствую за ответы !
I++

$a = 10;

if ($a > 1 && $a < 10){
echo 'Переменна $а попадает в диапозон';
}else{
echo 'Переменна $а не попадает в диапозон';
}


:)
rooor
я тоже нарисую =)
$a = 2;
if($a > 1 and $a < 10)
echo 'больше 1 и меньше 10';
elseif($a == 1 or $a == 10)
echo 'равно 1 или 10';
else
echo 'меньше 1 или больше 10';
I++
$a = '1пыщ1';
if($a > 1 and $a < 10)
echo 'больше 1 и меньше 10';
elseif($a == 1 or $a == 10)
echo 'равно 1 или 10';
else
echo 'меньше 1 или больше 10';


Играем в угадайку, угадайте, что выпадет? :)
rooor
не проверял, думаю что сработает else, потому что $a строка
I++
Неа smile.gif
rooor
тогда по приведению к типу по первому знаку == 1
ilmel

$a = 10;

if ($a > 1 && $a < 10){
echo 'Переменна $а попадает в диапозон';
}else{
echo 'Переменна $а не попадает в диапозон';
}


Спасибо, заработало ! user posted image
А насчет 1пыщ1 - user posted image
Он интерпретирует только 1 цифру переменной как значение, остальное игнорирует ?
rooor
Цитата
Он интерпретирует только 1 цифру переменной как значение, остальное игнорирует ?

если переменная начинается с числа, то - до строки, если $a = '123sdfsdf234' то (int)$a будет 123
ilmel
Цитата (rooor @ 16.03.2013 - 10:36)


$a = 2;
if($a > 1 and $a < 10)
echo 'больше 1 и меньше 10';
elseif($a == 1 or $a == 10)
echo 'равно 1 или 10';
else
echo 'меньше 1 или больше 10';


Спасибо за подсказку, еще не "дошел" до elseif , но , получается , что это эквивалентно $a>=1 and $a<=10 с той разницей, что по elseif можно совершить дополнительное действие ?
ilmel
Цитата (rooor @ 16.03.2013 - 11:01)

если переменная начинается с числа, то - до строки, если $a = '123sdfsdf234' то (int)$a будет 123

А если с буквы, то после букв ? (int)$a будет 234 , если $a=тыщ234 ?
rooor
тогда $a будет 0
ilmel
Цитата (rooor @ 16.03.2013 - 11:09)
тогда $a будет 0

интересно... а почему ? user posted image ( может слишком много вопросов задаю ? smile.gif) в принципе, если следовать логике, то должен признать это строкой ( не числом), строка к этим условиям не подходит ( в условиях цифры), следовательно else
I++
Цитата (rooor @ 16.03.2013 - 15:01)
Цитата
Он интерпретирует только 1 цифру переменной как значение, остальное игнорирует ?

если переменная начинается с числа, то - до строки, если $a = '123sdfsdf234' то (int)$a будет 123

Неа :)

$a = '1e2';

if($a == 1) echo '1';
if($a == 10) echo '10';
if($a == 100) echo '100';


Оператор не тождественного сравнения в данном случае преобразует переменную $a во float потому, что у нас стоит e2 иначе можно записать так: 1e+2 что будет значит 100

Вот еще прикол:

$a = '1e+2';

if($a == 1) echo '1'."\n";
if($a == 10) echo '10'."\n";
if($a == 100) echo '100'."\n";
if($a == '100') echo '100 string'."\n";
if($a == (float)100) echo '100 float'."\n";
if($a == (int)'100') echo '100 int'."\n";
if($a == '1e+2') echo '1e+2 string =='."\n";
if($a === '1e+2') echo '1e+2 string ==='."\n";
if($a == 1e+2) echo '1e+2 number'."\n";

$a = 100;

if($a === 1e+2) echo '1e+2 ==='."\n";
if($a === (int)1e+2) echo '1e+2 float ==='."\n";

$a = (float)100;
if($a === (float)1e+2) echo '(float)$a 1e+2 float ==='."\n";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.