Этот урок набрал набрал достаточно большое количество
комментариев и дальнейшее его комментирование отключено.
Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку,
посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали.
Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
Привет! В примере про четное-нечетное, если ввести, например, $x = 2.2 (т.е. присвоить не integer, а float), то результат выводится как "четное", хотя это дробное число. Скажи, пожалуйста, почему так происходит и как сделать проверку условия на целочисленное значение?
Привет, можно в самом начале сделать вызов функции is_int(число), которая проверит является ли значение целым числом, и вернёт true или false. Документация по функции тут.
Спасибо! Всё получилось)
Еще 1 вопрос. В последнем примере этого урока, если я не ошибаюсь, правильно будет написать условие if ($x >= 100) , а не if ($x > 100). Посмотрите, пожалуйста.
2) Выполнятся 1 и 4 выражение, так как "string" и 5 переводятся в значение true, в то время как 0 и null (отсутствие значения) преобразуются в значение false.
Не стоит переменной $x, в которой лежит число, присваивать строку. Ваша переменная должна быть для чего-то предназначенной, и нельзя в неё записывать что-то постороннее. Назовите итоговую переменную $result, если уж хочется использовать переменную. А вообще - здесь сразу можно писать:
echo $x % 2 == 0 ? ' чётное' : ' нечётное' ;
Поправьте отступы. У вас местами по 2 пробела в коде. Такого быть не должно. Прочитайте про Reformat Code в PhpStorm.
<?php
if ('string') {
echo 'Условие выполнено';
}else{
echo 'Условие не выполнено';
}// Условие выполнено, ибо любое ненулевое чисо (строка) приводится к true, и условие выполняется
echo "<br>";
if (0) {
echo 'Условие выполнено';
}else{
echo 'Условие не выполнено';
} // Условие не выполнено, ибо нулевое значение приводится к false
echo "<br>";
if (null) {
echo 'Условие выполнено';
}else{
echo 'Условие не выполнено';
} // То же, что и в предыдущем случае
echo "<br>";
if (5) {
echo 'Условие выполнено';
}else{
echo 'Условие не выполнено';
} // условие выполнено
echo "<br>";
?>
Выполнились только 1 и 4 условия, 2 и 3 условия (а также пустая строка) после приведения к типу Boolean получают значение false и поэтому условия не выполняются.
После выполнения, как всегда, посмотрела уже готовые варианты в комментариях, поняла как можно упростить. И все же высылаю то, что пришло в голову первым
Не нужно первое, что пришло в голову :)
В программировании важно не только придумать решение и сделать чтобы работало, нужно еще и поработать над его упрощением. Это самое сложное, но делать это нужно.
По поводу вот этой строки:
$y= $x %2 == 0 ? $y=$even : $y=$odd;
Когда вы делаете $y = $even, в $y уже попадает нужное значение. Вам же нужно в $y передать результат тернарного оператора, то есть вот так:
if ('string') {
echo 'Условие ОК'; // Будет выполняться т.к. идет проверка на true или false. В данном случае строка не пустая и не содержит 0, значит true
}
if (0) {
echo 'Условие ОК'; // Не будет выполняться т.к. в данном случае строка содержит 0, значит false
}
if (null) {
echo 'Условие ОК'; // Не будет выполняться null - это отсутствие данныех, а значит false
}
if (5) {
echo 'Условие ОК'; // Будет выполняться т.к. в данном случае строка содержит 5(не 0 и не пустую строку), значит true
}
$x = 2; // Вводные данные
$result = $x % 2 == 0 ? "Число $x четное" : "Число $x не четное"; // Проверка остатка при делении на 2 и запись результата проверки условия в переменную result
echo $result; // Выводим результат
if (0) {
echo 'Условие ОК'; // Не будет выполняться т.к. в данном случае строка содержит 0, значит false
}
if (5) {
echo 'Условие ОК'; // Будет выполняться т.к. в данном случае строка содержит 5(не 0 и не пустую строку), значит true
}
Это не строки, это - числа. Ещё можно просто назвать это выражениями, но не строками.
В примере про четное/нечетное, если ввести число состоящее более чем из 15 цифр, например, 9999999999999999 (16 цифр), то результат выводится как "Число чётное". Это баг или фича? ))
Даже нулевым его называть не стоит. Ноль - это 0. Это все же присутствие значения числа 0. А null - это вообще отсутствие какого-либо значения. Называйте его null, и никак иначе.
читал про то, что использование if ($a === $b) быстрее выполняется, чем if ($a == $b) и switch case. Насколько это верно и имеет смысл такого подхода в программировании?
== работает медленнее, потому что приводит перед сравнением аргументы к одному типу. А вот === сразу сравнивает, без приведения типов.
3 == '3' // true
но
3 === '3' // false
Реальной разницы в скорости вы не заметите в 99% случаев, но дело в том, что за счет более строгого сравнения при использовании === достигается бОльшая надёжность кода.
<?php
$number = 1;
echo $result = $number % 2 ? 'нечетное число' : 'четное число';
echo '<br>';
if (‘string’)
echo 'Условие выполнилось'.'<br>'; //string this is TRUE
if (0)
echo 'Условие выполнилось'.'<br>';
else
echo 'Условие не выполнилось'.'<br>'; // 0 this is FALSE
if (null)
echo 'Условие выполнилось'.'<br>';
else
echo 'Условие не выполнилось'.'<br>'; //NULL this is FALSE
if (5)
echo 'Условие выполнилось'.'<br>'; //5 this is TRUE
нечетное число
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Условие выполнилось
В статье
"Хорошо, давайте пройдёмся по особенностям оператора switch, о которых нужно помнить всегда.
3.несколько case-ов могуть быть записаны подряд, тогда код в секции вЫЫполнится при выполнении хотя бы одного из условий."
В 3 условии 2 буквы "Ы" в слове "выыполнится", у Вас опечатка.
Добрый день, хотел спросить по поводу комментариев сайта, сделай пожалуйста тут функцию отображения даты комментария, а то я во времени теряюсь. Было бы неплохо знать, когда и какой комментарий был написан. Спасибо.
Благодарю за уроки в открытом доступе! Очень выручают :)
Столкнулся с проблемой, пытаюсь с помощью оператора условий switch определить четное ли число и когда, например, ввожу значение числа с плавающей точкой у меня все-равно выполняется условие... Подскажи пожалуйста, где я ошибаюсь?
$x = -2.7;
switch ($x % 2) {
case 0:
echo 'Число X является четным';
break;
case $x > 0:
echo 'Число Х положительное и не чётное';
break;
default:
echo 'Число Х является отрицательным и не чётным';
}
<?php
// Код выполнится, не пустая строка = true;
if ('string') {
echo 'Условие выполнилось';
}
// Код не выполнится, 0 - это false;
if (0) {
echo 'Условие выполнилось';
}
// Код не выполнится, null - это false;
if (null) {
echo 'Условие выполнилось';
}
// Код выполнится, любое число (кроме 0) - это true
if (5) {
echo 'Условие выполнилось';
}
// Тернарный оператор
$x = 7;
echo $x % 2== 0 ? 'Четное' : 'Нечетное';
?>
<?php
// Код выполнится, не пустая строка = true;
if ('string') {
echo 'Условие выполнилось';
}
// Код не выполнится, 0 - это false;
if (0) {
echo 'Условие выполнилось';
}
// Код не выполнится, null - это false;
if (null) {
echo 'Условие выполнилось';
}
// Код выполнится, любое число (кроме 0) - это true
if (5) {
echo 'Условие выполнилось';
}
// Тернарный оператор
$x = 7;
echo $x % 2== 0 ? 'Четное' : 'Нечетное';
в первом if строка приводится к true,второй 0 приводится к false,третий null тоже вроде как к false хотя var_dump выводит тоже null,четвёртый 5 переводит в true
var_dump - выводит значение как есть.
А вот когда мы используем какое-то выражение в условии, то оно приводится сначала к булеву значению.
По поводу решения - если в переменной $a уже начали хранить число, то пусть там только числа и хранятся в дальнейшем. Либо просто сразу выводите результат тернарки:
echo $a % 2 === 0 ? 'чётное' : 'не чётное';
или присваивайте в другую переменную:
$res = $a % 2 === 0 ? 'чётное' : 'не чётное';
Закрывающий тег ?> здесь не нужен - он ставится только в файлах, в которых далее идет HTML-код. В следующих уроках увидите.
<?php
$x = 2;
$result = $x % 2 == 0 ? 'Четное' : 'Нечетное';
echo $result;
echo '<br>';
if ('string') {
echo 'Условие выполнилось';
}
echo '<br>'; // Кавычки не пустые, поэтому условие выполнилось
if (0) {
echo 'Условие выполнилось';
}
echo '<br>'; // Условие не выполнилось потому что значение равно 0
if (null) {
echo 'Условие выполнилось';
}
echo '<br>'; // Условие не выполнилось так как null - отсутсвие значения
if (5) {
echo 'Условие выполнилось';
}
echo '<br>'; // Условие выполнилось так как числовое значение выполняет условие
Сначала меня сбило с толку то, что я не могу задавать какие-то действия в результате тернарного оператора. Насколько я понимаю, после "?" идут только результаты, и мы не можем давать туда какие-то действия. Первоначально я сделал ...? echo'Нечётное' : echo'чётное', но после ошибки я это исправил)
Очень долго тупил, почему у меня с нечетными отрицательными числами не работает код, оказалось пропустил знак минус, при определении четности в отрицательном диапазоне.
<?php
$x=random_int(-999,999);
echo 'Выпало число: '.$x ;
echo '<br><br>';
if($x>0) {
echo 'Число ' . $x . ' четное или нет? ';
echo '<br><br>';
switch ($x) {
case $x % 2 == 0;
echo 'Число ' . $x . ' четное.';
break;
case $x % 2 == 1;
echo 'Число ' . $x . ' не четное.';
break;
}
}
if($x<0) {
echo 'Число '.$x.' меньше нуля, но является ли оно четным?';
echo '<br><br>';
switch ($x){
case $x%2==0;
echo 'Число '.$x.' меньше нуля и четное.';
break;
case $x%2==-1;
echo 'Число '.$x.' меньше нуля и нечетное.';
}
}
if($x==0) {
echo 'Число ' . $x . ' равно нулю. Все тлен.';
}
Привет !
Условия все попробовала, происходит проверка на true или false значение, значения 'string' и 5 являются true и получаем результат 'условие выполнилось'. 0 и null это false значения и получаем 'условие не выполнилось'. Еще если бы строка была пустой '' тоже было бы 'условие не выполнилось', правильно поняла?
проверка на четность с тернарным оператором.
Здравствуйте! Какой-то странный этот оператор switch. В нём отсутствует логика?
Пример 1.
Посмотрите, пожалуйста, код:
$var = 1;
switch ($var)
{
case 1:
case 2:
echo "Условие выполнено <br>"; break;
case 3:
echo "Условие не выполнено <br>"; break;
default:
echo "Просто по умолчанию <br>";
}
Результат выполнения:
Условие выполнено
Почему? Ведь если он заходит с проверкой в case 1 и ничего там не находит, то он вообще ничего не должен выводить. По логике так. Если ничего нет, то ничего и не выводится. Почему вместо этого он выводит то, что стоит в case 2?
Пример 2.
Теперь мы убираем "брейки". Получаем такой код:
$var = 1;
switch ($var)
{
case 1:
case 2:
echo "Условие выполнено <br>";
case 3:
echo "Условие не выполнено <br>";
default:
echo "Просто по умолчанию <br>";
}
Результат выполнения:
Условие выполнено
Условие не выполнено
Просто по умолчанию
Почему? Ведь если $var = 1, то должно выполниться только то, что относится к case 1, а вместо этого выполняется всё подряд: и case 1, и case 2, и case 3, и даже default! Где логика?
Почитайте документацию. Можно для одного и того же действия перечислить несколько case-ов. Для этого они перечисляются подряд, как у вас и сделано. Если хотите, чтобы в первом case ничего не выполнялось, надо в нем поставить break.
Спасибо Вам за ответ. Давайте я введу для себя правило, чтобы в будущем сразу ему следовать. :)
Если проверка switch заходит хотя бы в один case, то проверка условий во всех остальных case, а также в default не выполняется.
Это значит, что если нет окончания оператора switch с помощью break, то оператор switch продолжит своё выполнение с заходом во все другие части case и в часть default без проверки, то есть вне зависимости от значения выражения, написанного в скобках switch (). Такие заходы будут выполняться, пока не произойдёт одно из двух: будет обнаружен break, либо оператор switch подойдёт к концу, выполнив все части case и default.
//ДЗ
//Проверил операторы
if ('string') {echo 'Условие выполнилось';}//в условии true, условие выполнилось
if (0) {echo 'Условие выполнилось';}//условие false, поэтому ничего не вывел
if (null) {echo 'Условие выполнилось';}//условия не существует, поэтому ничего не вывел
if (5) {echo 'Условие выполнилось';}//в условии true, условие выполнилось
//Четность числа
$searchEvenNumber = 423533;
$resultEvenNumber = $searchEvenNumber % 2 == 0 ? 'Число четное': 'Число не четное';
echo $resultEvenNumber;
Неправильно используется тернарный оператор. В правой части не должно быть никаких присваиваний. Нужно использовать результат, который получился в переменной mod
Тернарка не используется ведь. Используется результат логического И. Но никакой тернарки нет. А в задании есть. Привыкайте делать задачи по заданию. В работе пригодится.
x=string
Условие выполнилось
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Число четное
x=0
Условие не выполнилось
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Число четное
x=null
Условие не выполнилось
Условие выполнилось
Условие выполнилось
Условие не выполнилось
Число четное
x=5
Условие не выполнилось
Условие не выполнилось
Условие не выполнилось
Условие выполнилось
Число не четное
$x = 155;
if($x > 0){
if ($x >= 100) {
if ($x >= 150) {
echo 'Число больше либо равно 150';
}else {
echo 'Число больше 100 но меньше 150';
}
}else {
echo 'Число больше 0 но меньше 100';
}
}else {
echo 'Число меньше либо равно 0';
}
$t = 13;
$numberCheck = $t % 2 == 0 ? 'данное число четное' : 'данное число нечетное';
echo $numberCheck;
//данное число нечетное
<?php
if ('string') {
echo 'the condition is fulfilled'; // строка true
}
echo '<br>';
if (0) {
echo 'the condition is fulfilled'; // ноль получается как false
}
echo '<br>';
if (null) {
echo 'the condition is fulfilled'; // null нет заначения - false
}
echo '<br>';
if (5) {
echo 'the condition is fulfilled'; // положительное число "приходит" как true
}
В последнем, выдавало всего 2 строки "Условие выполнилось" - остальное не прошло через echo - стал считать, что там false, надеюсь я прав)
В первом примере если передать 3, то в первом условии возникнет ошибка - используется неопределенная переменная. Да и в целом непонятно, что хотели сделать.
1) Все кроме "0" и "NULL" - TRUE.
(По аналогии с дискретным управлением / бинарной передачей информации потенциальным методом: отсутствие напряжения (false) - например: выкл. двигатель / передача "0"; наличие установленного порогового напряжения (true) - например: вкл. двигатель / передача "1". Т.к. установленное пороговое напряжение для разных систем бывает разным, 3В, 5В, 12В и т.д., то логично нулем (false) считать 0В или NULL, а любое отличное от нуля значение, которое могло бы стать пороговым - считать TRUE.
2) echo $x % 2 == 0 ? 'четное' : 'нечетное';
<?php
// Условие будет true. False возможен в случе (пустой строки) и 0;
$a = 'string';
if ($a) {
echo 'Условие выполнилось';
} else {
echo 'Условие не выпольнилось';
}
echo '<br>';
// Условие будет false. True возможен c любым числом или строкой. Работает как неявное преобразование;
$a = 0;
if ($a) {
echo 'Условие выполнилось';
} else {
echo 'Условие не выпольнилось';
}
echo '<br>';
// Условие будет false. Null не имеет значений и не может быть преобразован;
$a = null;
if ($a) {
echo 'Условие выполнилось';
} else {
echo 'Условие не выпольнилось';
}
echo '<br>';
// Условие будет true.
$a = 5;
if ($a) {
echo 'Условие выполнилось';
} else {
echo 'Условие не выпольнилось';
}
echo '<br>';
//Условие с тренарным оператором, проверка чётного и нечётного числа;
$x = 2;
$even = $x % 2 == 0 ? 'Число чётное' : 'Число нечётное';
echo '$x = ' .$even;
1)Условие выполнилось - любое строковое или числовое значение будет преобразовано к булевому true
2)Условие не выпольнилось - 0 или '' (пустая строка) всегда будет false
3)Условие не выпольнилось null всегда будут false не могут быть преобразованы в true. Это тип не имеющий значения.
4)Условие выполнилось - То же что 1 задача;
5)$x = Число чётное - вывод значение уравнения;
А это я скопировала ваш код из домашнего задания с вашими кавычками. Мне тоже интересно, что это за кавычки.
В первой части задания мои там только комментарии.
<?php
if ('string') {echo 'Условие выполнилось';} // равно TRUE после приведения в тип boolean
echo '<br>';
if (0) {echo 'Условие выполнилось';} // равно FALSE после приведения в тип boolean
echo '<br>';
if (null) {echo 'Условие выполнилось';} // равно FALSE после приведения в тип boolean
echo '<br>';
if (5) {echo 'Условие выполнилось';} // равно TRUE после приведения в тип boolean
Добрый день
Почему-то когда делаю вычисление чётности числа тернарным оператором, пишет, unexpected echo, а обычным условием всё хорошо.
Возможно ошибка в синтаксисе, но не соображу где
$x % 2 == 0 ? echo 'Число чётное' : echo 'Число нечётное';
if ('string') {
echo 'Условие выполнилось';
}//условие выполнится, так как не пустая строка это всегда true
if (0) {
echo 'Условие выполнилось';
}//условие не выполнится, так как 0 всегда false
if (null) {
echo 'Условие выполнилось';
}//условие не выполнится, так как null фактически то же самое что 0 или пустая строка, поэтому false
if (5) {
echo 'Условие выполнилось';
}//условие выполнится, так как любое число больше 0 является true
Моё ДЗ
<?php
$a = 7;
$resalt = $a % 2 == 0 ? 'четное' : 'нечётное';
echo 'Число a ' .$resalt .'<br>';
if ('string') {
echo 'Условие выполнилось 1'.'<br>'; // Код выполнится, не пустая строка - это true
}
if (0) {
echo 'Условие выполнилось 2'.'<br>'; // Код не выполнится, 0 - это false
}
if (null) {
echo 'Условие выполнилось 3'.'<br>'; // Код не выполнится,null не имеет значений и не может быть преобразован - это false
}
if (5) {
echo 'Условие выполнилось 4'.'<br>'; // Код выполнится, любое число (кроме 0) - это true
}
<?php
if('string')
{
echo 'Условие выполнено';
} else {
echo 'Условие не выполнено';
}
echo '<br>';
if (0)
{
echo 'Условие выполнено';
} else {
echo 'Условие не выполнено';
}//Условие не выполнено, т.к. 0 имеет значение false.
echo '<br>';
if (null)
{
echo 'Условие выполнено';
} else {
echo 'Условие не выполнено';
}//Условие не выполнено, т.к. null - пустое значение, оно равно false.
echo '<br>';
if (5)
{
echo 'Условие выполнено';
} else {
echo 'Условие не выполнено';
}//Условие выполнено, т.к. если число больше или равно 0, то булеов значение - true.
echo '<br>';
$x = 3;
echo $x % 2 == 0 ? 'Число четное' : 'Число нечетное';
if ('string') {echo 'Условие выполнилось';}// все что отличается от NULL будет true
if (0) {echo 'Условие выполнилось';}//ничего не выведет
if (null) {echo 'Условие выполнилось';}//ничего не выведет
if (5) {echo 'Условие выполнилось';}//условие выполнилось (все что отличается от NULL будет true)
$x = 5;
$x % 2 == 0 ? print "ok" : print "не четное";//кстати в тернарном операторе echo не работает, только print
<?php
if ('string') {
echo 'Условие выполнилось';
} // условие будет выполнено, т.к. любая ненулевая строка будет преобразована в true
if (0) {
echo 'Условие выполнилось';
} // условие не будет выполнено, т.к. 0 будет преобразован в false
if (null) {
echo 'Условие выполнилось';
} // условие не будет выполнено, т.к. null будет преобразован в false
if (5) {
echo 'Условие выполнилось';
} // условие будет выполнено, т.к. число 3 будет преобразовано к true
$a = 1;
$isNumberEvenOrOdd = $a % 2 == 0 ? 'EVEN': 'ODD';
echo $isNumberEvenOrOdd;
<?php
if ('string') {
echo 'Условие выполнилось';
} //условие выполнилось, так как содержит не нулевое число, не и не пустую строку. приводит к значению true
if (0) {
echo 'Условие выполнилось';
} // условие не выполнилось, так как указано нулевое число. приводит к false
if (null) {
echo 'Условие выполнилось';
} // условие не выполнилось, так как указано значение null. приводит к false
if (5) {
echo 'Условие выполнилось'; ;
} //условие выполнилось, так как содержит не нулевое число, не и не пустую строку. приводит к значению true
$x = 12;
$res = $x % 2 == 0 ? 'число четное' : 'число нечетное' ;
echo $res;
<?php
if ('string') {echo 'Условие выполнилось';} //условие выполнилось
if (0) {echo 'Условие выполнилось';} //условие не выполнилось
if (null) {echo 'Условие выполнилось';}//условие не выполнилось
if (5) {echo 'Условие выполнилось';}//условие выполнилось
echo '<br>';
$x = 5;
$even = $x % 2 == 0 ? 'число четное' : 'число нечетное';
echo $even;
Т.к. у операторов условий все операнды приводятся к булевому значению, то в данных примерах условие выполнялось, если числа не равны нулю, а строки не пустые.
<?php
if ('string') {
echo 'Условие выполнилось';
} // Условие выполнилось, потому что string дает true
if (0) {
echo 'Условие выполнилось';
} //Условие не выполнилось, потому что 0 дает false
if (null) {
echo 'Условие выполнилось';
} //Условие не выполнилось, потому что null дает false
if (5) {
echo 'Условие выполнилось';
} //Условие выполнилось, потому что любое число, отличное от 0, дает true
$num = 2;
$qEven = $num % 2 == 0 ? "Число $num четное" : "Число $num нечетное";
echo $qEven;
<?php
if ('string') {echo 'true';
}
else{
echo 'false';
} // Выполнится успешно, так как целое значение string будет преобразовано к true
echo '<br>';
if (0) {
echo 'true';
}else{
echo 'false';
} // Не будет выполнено успешно, так как число 0, поэтому будет преобразовано к false
echo '<br>';
if (null) {
echo 'true';
}else{
echo 'false';
} // Не будет выполнено успешно, так как значение равно нулю, поэтому будет преобразовано к false
echo '<br>';
if (5) {
echo 'true';
}else{
echo 'false';
} // Выполнится успешно, так как целое значение равно 5 и будет преобразовано к true
echo '<br><br>';
$num=1280;
echo $res = $num % 2 ? 'нечетное число' : 'четное число';
echo '<br>';
// четное число
Мне очень нравится курс и интересные упражнения в конце урока! Спасибо большое. Написала свое решение второго задания и посмотрела предлагаемое решение - верное использование тождественного равенства, ведь правда в значение переменной $number (в моем случае) может быть поставлена строка, как например '9' и тогда при обычном или тождественном равенстве вывод 'число 9 - нечетное' не изменится. Тогда вопрос: почему используется '===' вместо '='? )
<?php
if ('string') { //true
echo 'Условие выполнилось'; //надпись появится, поскольку в условии стоит строка!= false
}
if (0) { //false
echo 'Условие выполнилось'; // надпись не появится, поскольку в условии 0, а значит false
}
if (null) { //false
echo 'Условие выполнилось'; //null - имя без какого-либо значения, значит ничего не напечатается
}
if (5) { //true
echo 'Условие выполнилось'; //надпись появится, поскольку в условии стоит число 5!= false
}
echo '<br>'; // переход на новую строку для вывода второго задания
$number = 9; //можно менять значение на любое число
$result = ($number % 2 == 0) ? 'Число '.$number.' - четное' : 'Число '.$number.' - нечетное';
echo ($result);
<?php
if ('string') {echo 'Условие выполнилось';}
if (0) {echo 'Условие выполнилось';}
if (null) {echo 'Условие выполнилось';}
if (5) {echo 'Условие выполнилось';}
Результат
Условие выполнилось (т.к. 'string' - это не нулевая строка и состоит не из 0)
(не выполнилось, т.к. 0 - нулевое число)
(не выполнилось, т.к. null не является строкой '' или числом)
Условие выполнилось (т.к. 5 - это не нулевое число)
<?php
$x = 2;
$mod = ($x % 2 == 0) ? 'четное':'нечетное';
echo 'Число:' .$mod;
Результат:
Число:четное
<?php
$x = 3;
$mod = ($x % 2 == 0) ? 'четное':'нечетное';
echo 'Число:' .$mod;
Результат:
Число:нечетное
<?php
if ('string') {echo 'Условие выполнилось';}
// Условие было выполнено, так как строка 'string' не явно приведена к true
if (0) {echo 'Условие выполнилось';}
// На экране ничего не выведется, т.к. 0 будет приведёт к false
if (null) {echo 'Условие выполнилось';}
// На экране ничего не выведется, т.к. null будет приведёт к false
if (5) {echo 'Условие выполнилось';}
// Условие было выполнено, так как число 5 будет не явно приведено к true
$x = 2;
$evenNumber = $x % 2 == 0 ? 'Чётное число' : 'Не чётное число'; // определяем является ли число X чётным и записываем значение в переменную
echo $x . $evenNumber;
Условия if ('string') {echo 'Условие выполнилось';} if (5) {echo 'Условие выполнилось';} выполнятся, потому что булево значение true и код секции будет выполнен.
Условия if (0) {echo 'Условие выполнилось';} if (null) {echo 'Условие выполнилось';} не выполнятся, потому что приведение к булевому значению вернет false, так как операнд НОЛЬ и null (насколько я понял, null - это отсутствие каких-либо данных, но не пустая строка?!).
<?php
if ('string') {
echo 'условия выполнено';
}
else {
echo 'условия не выполнено';
}
// условия выолнится потому что эта строка
echo'<br>';
if (0) {
echo 'условия выполнилось';
}
else {
echo 'условия не выполнилось';
}
// условия не выполнилось потому что любое нулевое значения приводит к false
echo '<br>';
if (null) {
echo 'условия выполнилось';
}
else{
echo 'условия не выполнилось';
}
//условия не выполнится потому что null приводит к false
echo '<br>';
if (5) {
echo 'условия выполнилось';
}
else {
echo 'условия не выполнилось' ;
}
//условия выполнится потому что любое не нулевое число приводит к true
условия выполнено
условия не выполнилось
условия не выполнилось
условия выполнилось
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого)
P.S. Извините за долгий ответ, дальше будет быстрее.
<?php
//1
if ('string') {echo 'Условие выполнилось';} //Выполнилось - преобразуется в bool(true), т.к. строка не пуста и не равна '0' поэтому истина
if (0) {echo 'Условие выполнилось';} //Не выполнилось - 0 преобразуется к bool(false)
if (null) {echo 'Условие выполнилось';} //Не выполненилось - null специальный тип указывающий на ни что преобразуется в bool(false)
if (5) {echo 'Условие выполнилось';} //Выполнилось - 5 преобразуется к bool(true)
echo "<br>";
//2
$num = 5;
$parityMsg = $num % 2 == 0 ? ' Чётное' : ' Нечётное';
echo "Число $num - " . $parityMsg;
?>
<?php
if ('string') {
echo 'Условие выполнено'; // выполняется, так как false будет только в случае 0 или Null
}
else{
echo 'Условие не выполнено';
}
echo '<br>';
if (0) {
echo 'Условие выполнено';
}
else{
echo 'Условие не выполнено'; // не выполняется, так как 0 все выдает false
}
echo '<br>';
if (null) {
echo 'Условие выполнено';
}
else{
echo 'Условие не выполнено'; // не выполняется, так как NULL все выдает false
}
echo '<br>';
if (5) {
echo 'Условие выполнено'; // выполняется, так как false будет только в случае 0 или Null
}
else{
echo 'Условие не выполнено';
}
echo '<br>';
$x = 9;
$evenOrNot = $x % 2 == 0 ? 'четное' : 'нечетное';
echo 'Число ' . $evenOrNot;
?>
Сейчас активно начал их изучать, т.к. понадобилось написать несколько простых функций, а без базовых знаний php это конечно нереально.
Я полагаю, что мой вопрос близок к этому уроку, поэтому задам его здесь.
Как записать в условие не равно, а содержит?
Например есть несколько параметров:
1) Мужчины
2) Женщины
3) Красивые дети
4) Какой-то другой параметр
А как переписать эту функцию, чтобы выполнялось следующее условие:
Если текст = "Мужчины", то записать "Для мужчин"
Если текст = "Женщины", то записать "Для женщин"
Если текст содержит слово "дети", то записать "Для детей"
Если иное значение, то вообще ничего не записывать.
Спасибо, что помогли мне.
Сработал такой код, наверное с пятой попытки)) Видимо делал ошибки в синтаксисе.
Правда по непонятной причине почему-то VPS сервер перестает справлять с нагрузкой, после запуска такого кода и обрывает соединение с базой данных. Хотя не думаю, что эта функция требует более 1 Гб оперативной памяти.
Сделал так:
А еще методом тыка, я понял 2 вещи:
1) Если убрать return null; то функция запишет то, что было записано первоначально.
2) Если вместо return null; написать return 'Для всех';, то запишется это значение.
Вдруг кому пригодится =)
И еще малюсенький вопрос)))
В таком виде функция регистрозависимая. А как будет выглядеть правильное написание регистронезависимой функции?
Некорректное использование тернарного оператора. Он используется для возврата одного из значений в правой части в левую часть выражения. У вас же он применяется для побочного вызова кода в случае выполнения или невыполнения условия. Используйте в таких случаях if-else.
1 и 4 выражения будут выполнены, так как "string" и 5 переводятся в значение true, в то время как 0 и null (отсутствие значения) преобразуются в значение false.
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого)
<?php
// любое не нулевое или не пустое число будет преобразовано в true
if ('string') {
echo 'Условие выполнилось';
}
// 0 преобразуется в false
if (0) {
echo 'Условие НЕ выполнилось';
}
// пустое значение преобразуется в false
if (null) {
echo 'Условие НЕ выполнилось';
}
// любое не нулевое или не пустое число будет преобразовано в true
if (5) {
echo 'Условие выполнилось';
}
//определения числа на четность
$number = 18;
$isEven = $number % 2 == 0 ? 'Число четное' : 'Число не четное';
echo $isEven;
$number = 17;
$isEven = $number % 2 == 0 ? 'Число четное' : 'Число не четное';
echo $isEven;
//спасибо за прекрасные уроки
<?php
$x='string';
if($x){
echo'Условие выполнено';
}
//при сравнения типа string, стоки всегда переводятся в числа, а потом сравниваются.//
echo '<br>';
$y=0;
switch ($y) {
case 'value1':
echo'Условие выполнилось';
break;
default:
echo'Условие не выполнилось';
break;
}
//В фигурных скобках мы перечисляем операторы case, после которых указываем значение, с которым сравнивается значение операнда switch.//
echo '<br>';
$z=null;
if (!$z) {
echo 'Условие выполнилось';
}
//переменная в которой ничего не лежит//
echo '<br>';
$e=5;
if ($e) {
echo'Условие выполнилось';
}
if($e%2==0){
echo'Число Чётное';
}else {
echo'Число нечётное';
}
//Чётное или нечётное//
Привет, Такой вопрос по домашке, Через оператор if определяю число четное и нечетное, а вот через тернарный оператор ни как не получается.)
Как вариант:
Элегантно.
echo ($x % 2 == 0) ? 'четное' : 'нечетное';
нужны ли тут скобки?
нет
У меня так)
Не самое очевидное решение. Лучше явно сравнивать результат с нулём.
Привет, хочу водить числа не в код, а в браузере и использовать их, как это лучше сделать?
Привет, хорошее желание! Скоро будет урок по этой теме, не забегай вперед.
Привет! В примере про четное-нечетное, если ввести, например, $x = 2.2 (т.е. присвоить не integer, а float), то результат выводится как "четное", хотя это дробное число. Скажи, пожалуйста, почему так происходит и как сделать проверку условия на целочисленное значение?
Привет, можно в самом начале сделать вызов функции is_int(число), которая проверит является ли значение целым числом, и вернёт true или false. Документация по функции тут.
Спасибо! Всё получилось)
Еще 1 вопрос. В последнем примере этого урока, если я не ошибаюсь, правильно будет написать условие if ($x >= 100) , а не if ($x > 100). Посмотрите, пожалуйста.
Совершенно верно! Спасибо, исправил =)
2) Выполнятся 1 и 4 выражение, так как "string" и 5 переводятся в значение true, в то время как 0 и null (отсутствие значения) преобразуются в значение false.
3)
Совершенно верно =)
А вот тут я не согласен, вместо знака определения остатка стоит знак деления. Он не будет определять четность или нечетность. Вроде бы я прав)))
Действительно, глаз уже замылился проверять. Спасибо.
Тут у Вас ошибку нашли - так не работает.
На экране:
число 7 нечётное
Хорошо, но есть пара мелких замечаний:
Прочитал и воспользовался Reformat Code в PhpStorm. Полезная штука !
А-то!)
Гуд)
Проверка четности:
С помощью тернарного оператора:
С помощью if-else:
Отлично! Плюс за вариант со switch-case! =)
Ок, из улучшений можно сделать следующее:
можно упростить до
А вот это:
лучше заменить на
Так как:
Хорошо, что предусмотрели вариант с числом меньше нуля - за это респект :)
Не нужно первое, что пришло в голову :)
В программировании важно не только придумать решение и сделать чтобы работало, нужно еще и поработать над его упрощением. Это самое сложное, но делать это нужно.
По поводу вот этой строки:
Когда вы делаете $y = $even, в $y уже попадает нужное значение. Вам же нужно в $y передать результат тернарного оператора, то есть вот так:
к сожалению, пока то, что первое пришло в голову приходит долго и мучительно. а когда начинаю что-нибудь "мудрить" все ломается ))
вот даже по поводу исправленной строки сидела и 5 минут думала что, как и почему )
Это приходит не сразу, нужно время. Я по возможности буду направлять в нужное русло.
Это не строки, это - числа. Ещё можно просто назвать это выражениями, но не строками.
А так - всё хорошо =)
Да, конечно, был не внимателен при описании. Спасибо!:)
В примере про четное/нечетное, если ввести число состоящее более чем из 15 цифр, например, 9999999999999999 (16 цифр), то результат выводится как "Число чётное". Это баг или фича? ))
Это баг) можете прочитать об ограничениях значений типа integer - они не бесконечны.
Отлично!
норм!
null - это не пустая строка. Пустая строка это - ''. А null - это отсутствие значения. При преобразовании к bool приводится в false.
В остальном все правильно.
не правильно выразил свои мысли))) имел ввиду "нулевое" (отсутствующее) значение))
Даже нулевым его называть не стоит. Ноль - это 0. Это все же присутствие значения числа 0. А null - это вообще отсутствие какого-либо значения. Называйте его null, и никак иначе.
хорошо! Спасибо за разъяснение =)
читал про то, что использование if ($a === $b) быстрее выполняется, чем if ($a == $b) и switch case. Насколько это верно и имеет смысл такого подхода в программировании?
== работает медленнее, потому что приводит перед сравнением аргументы к одному типу. А вот === сразу сравнивает, без приведения типов.
но
Реальной разницы в скорости вы не заметите в 99% случаев, но дело в том, что за счет более строгого сравнения при использовании === достигается бОльшая надёжность кода.
Неправильное использование тернарного оператора - он возвращает результат. Правильно вот так:
То есть присваивать нужно результат его работы, а не внутри него.
понял, спасибо!
Неправильно используете тернарный оператор - смотрите комментарий выше.
нечетное число
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Условие выполнилось
ок!
В статье
"Хорошо, давайте пройдёмся по особенностям оператора switch, о которых нужно помнить всегда.
3.несколько case-ов могуть быть записаны подряд, тогда код в секции вЫЫполнится при выполнении хотя бы одного из условий."
В 3 условии 2 буквы "Ы" в слове "выыполнится", у Вас опечатка.
Спасибо, исправил.
Добрый день, хотел спросить по поводу комментариев сайта, сделай пожалуйста тут функцию отображения даты комментария, а то я во времени теряюсь. Было бы неплохо знать, когда и какой комментарий был написан. Спасибо.
Ок, постараюсь.
Помимо того, что имя $y ни о чем не говорит - все ок)
Ок
Ок
Сработает 1 и 4, так как значение true. В остальных false.
Отлично
Отлично
Благодарю за уроки в открытом доступе! Очень выручают :)
Столкнулся с проблемой, пытаюсь с помощью оператора условий switch определить четное ли число и когда, например, ввожу значение числа с плавающей точкой у меня все-равно выполняется условие... Подскажи пожалуйста, где я ошибаюсь?
Спасибо!
Для этого достаточно заглянуть в документацию - http://php.net/manual/ru/language.operators.arithmetic.php
И узнать, что оператор % - это ...
Спасибо!!!
А вот таким образом можно поступить?
Можно. Только resUlt
Тернарный оператор
ОК. Кроме тернарного оператора почистил ваш ответ - это было писать необязательно.
Отлично!
Куда пропали фигурные скобки и переносы? Переделайте в соответствии с уроком.
Ок
Можно еще вопрос, тестирую условия и не могу понять.
<?php
$x = говнокодер;
if ($x >10) {
echo "Число больше 10";
} elseif ($x <= 10) {
echo "Число меньше или равно 10";
}
else {
echo "Это вообще не число братан :)";
}
Как заставить программу проверять не только значения но и тип?
is_int, is_number, gettype. Для объектов - instanceof.
Код:
Результат:
Условия в PHP
1 - условие выполнилось
4 - условие выполнилось
1)Чётное
2)Чётное
3)Чётное
4)Нечётное
Вопрос:
Почему 'string' и null чётные?
Они не то чтобы четные. Просто остаток от деления на 2 равен... скольки? Выведите через var_dump
в первом if строка приводится к true,второй 0 приводится к false,третий null тоже вроде как к false хотя var_dump выводит тоже null,четвёртый 5 переводит в true
var_dump - выводит значение как есть.
А вот когда мы используем какое-то выражение в условии, то оно приводится сначала к булеву значению.
По поводу решения - если в переменной $a уже начали хранить число, то пусть там только числа и хранятся в дальнейшем. Либо просто сразу выводите результат тернарки:
или присваивайте в другую переменную:
Закрывающий тег ?> здесь не нужен - он ставится только в файлах, в которых далее идет HTML-код. В следующих уроках увидите.
Решения домашнего задания с помощью самих же учеников-гениально и очень полезно.
Что это вообще такое?
не сразу понята как этот оператор работает,но все -таки позднее дошло до меня
Отлично. Только название num не подходит. num говорит само за себя, что там лежит какое-то число. Более подходящее название - odd.
ОК
Хорошо
Отлично
Отлично
вот, всё работает на ура)
Отлично
Сначала меня сбило с толку то, что я не могу задавать какие-то действия в результате тернарного оператора. Насколько я понимаю, после "?" идут только результаты, и мы не можем давать туда какие-то действия. Первоначально я сделал ...? echo'Нечётное' : echo'чётное', но после ошибки я это исправил)
То, что после ? и после : - выполняется, и после этого получившееся значение возвращается из тернарного оператора.
Очень долго тупил, почему у меня с нечетными отрицательными числами не работает код, оказалось пропустил знак минус, при определении четности в отрицательном диапазоне.
Отлично
Привет !
Условия все попробовала, происходит проверка на true или false значение, значения 'string' и 5 являются true и получаем результат 'условие выполнилось'. 0 и null это false значения и получаем 'условие не выполнилось'. Еще если бы строка была пустой '' тоже было бы 'условие не выполнилось', правильно поняла?
проверка на четность с тернарным оператором.
проверка на четность с помощью if.
Всё отлично
спасибо )
Здравствуйте! Какой-то странный этот оператор switch. В нём отсутствует логика?
Пример 1.
Посмотрите, пожалуйста, код:
Результат выполнения:
Условие выполнено
Почему? Ведь если он заходит с проверкой в case 1 и ничего там не находит, то он вообще ничего не должен выводить. По логике так. Если ничего нет, то ничего и не выводится. Почему вместо этого он выводит то, что стоит в case 2?
Пример 2.
Теперь мы убираем "брейки". Получаем такой код:
Результат выполнения:
Условие выполнено
Условие не выполнено
Просто по умолчанию
Почему? Ведь если $var = 1, то должно выполниться только то, что относится к case 1, а вместо этого выполняется всё подряд: и case 1, и case 2, и case 3, и даже default! Где логика?
Спасибо за ответ!
Почитайте документацию. Можно для одного и того же действия перечислить несколько case-ов. Для этого они перечисляются подряд, как у вас и сделано. Если хотите, чтобы в первом case ничего не выполнялось, надо в нем поставить break.
Спасибо Вам за ответ. Давайте я введу для себя правило, чтобы в будущем сразу ему следовать. :)
Если проверка switch заходит хотя бы в один case, то проверка условий во всех остальных case, а также в default не выполняется.
Это значит, что если нет окончания оператора switch с помощью break, то оператор switch продолжит своё выполнение с заходом во все другие части case и в часть default без проверки, то есть вне зависимости от значения выражения, написанного в скобках switch (). Такие заходы будут выполняться, пока не произойдёт одно из двух: будет обнаружен break, либо оператор switch подойдёт к концу, выполнив все части case и default.
Это правильно?
Вроде правильно) Но как-то сложно. Правильная и простая формулировка есть в официальной документации.
Задание 1.
Значения 'string' и 5 являются для условия true.
Значения 0 и null как false.
Задание 2.
Правильно так:
Результат тернарного оператора возвращается. Его можно и в переменную присвоить. А выполнять вывод внутри самого оператора не нужно.
Сносно?
Хорошо
Отлично
Отлично
Отлично
Неправильно используется тернарный оператор. В правой части не должно быть никаких присваиваний. Нужно использовать результат, который получился в переменной mod
Отлично
Надо было через тернарку
Так в 3 строке используется
Тернарка не используется ведь. Используется результат логического И. Но никакой тернарки нет. А в задании есть. Привыкайте делать задачи по заданию. В работе пригодится.
Отлично
Отлично
Отлично
Супер
x=string
Условие выполнилось
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Число четное
x=0
Условие не выполнилось
Условие выполнилось
Условие не выполнилось
Условие не выполнилось
Число четное
x=null
Условие не выполнилось
Условие выполнилось
Условие выполнилось
Условие не выполнилось
Число четное
x=5
Условие не выполнилось
Условие не выполнилось
Условие не выполнилось
Условие выполнилось
Число не четное
Неправильно используется тернарный оператор.
Этим действием вы переопределили значение переменной $x, а потом уже присвоили её значение переменной $mod.
Вам же нужно было только на основании значения переменной x присвоить значение переменной mod.
Вот так?
Да
Привет! у меня вопрос, почему не срабатывает когда меняю местами в -$x, надо было перейти на вторую условию да?
Не понял вопроса. Но сделать надо наоборот.
Можно вот так написать код. но код работает.
Можно. Только к домашнему заданию не имеет никакого отношения.
Здравствуйте! а вот ДЗ проверьте пожалуйста.
Отлично
Пытался сделать какую то начальную логику для кристи\нолики.
Тернарный оператор
В последнем, выдавало всего 2 строки "Условие выполнилось" - остальное не прошло через echo - стал считать, что там false, надеюсь я прав)
В первом примере если передать 3, то в первом условии возникнет ошибка - используется неопределенная переменная. Да и в целом непонятно, что хотели сделать.
Тернарка - ок
Отлично
А почему отступы все пляшут? Выровнять нужно как в уроке. В PhpStorm можно просто нажать Ctrl+Alt+L и всё выровняется автоматически.
Для определения четности числа в дз нужно было использовать тернарный оператор.
Отлично
Тогда уж так:
Отлично
1) Все кроме "0" и "NULL" - TRUE.
(По аналогии с дискретным управлением / бинарной передачей информации потенциальным методом: отсутствие напряжения (false) - например: выкл. двигатель / передача "0"; наличие установленного порогового напряжения (true) - например: вкл. двигатель / передача "1". Т.к. установленное пороговое напряжение для разных систем бывает разным, 3В, 5В, 12В и т.д., то логично нулем (false) считать 0В или NULL, а любое отличное от нуля значение, которое могло бы стать пороговым - считать TRUE.
2) echo $x % 2 == 0 ? 'четное' : 'нечетное';
Отлично
Решение задачи из задания
Отлично
1)Условие выполнилось - любое строковое или числовое значение будет преобразовано к булевому true
2)Условие не выпольнилось - 0 или '' (пустая строка) всегда будет false
3)Условие не выпольнилось null всегда будут false не могут быть преобразованы в true. Это тип не имеющий значения.
4)Условие выполнилось - То же что 1 задача;
5)$x = Число чётное - вывод значение уравнения;
Всё отлично, только по поводу 5-го пункта - нет тут никаких уравнений) Применяйте правильные формулировки, в программировании это очень важно)
Артём, то есть вывод просто: Чётное или нечётное? без $x
Да нет, с кодом у вас всё ок. Я про вот это:
нет никаких уравнений здесь. Уравнения - это в математике.
Ааа. Всё въехал)) то не так написал:)
Отлично
Это что за кавычки такие? Не скидывайте сюда больше нерабочий код.
А это я скопировала ваш код из домашнего задания с вашими кавычками. Мне тоже интересно, что это за кавычки.
В первой части задания мои там только комментарии.
Ух, прошу прощения. Была ошибка в ДЗ. Исправил
1
Результат:
2
Отлично
Отлично
Добрый день
Почему-то когда делаю вычисление чётности числа тернарным оператором, пишет, unexpected echo, а обычным условием всё хорошо.
Возможно ошибка в синтаксисе, но не соображу где
$x % 2 == 0 ? echo 'Число чётное' : echo 'Число нечётное';
Заранее спасибо за ответ
Перечитайте про тернарный оператор. Там не должно быть никаких echo. Ознакомьтесь также с официальной документацией на PHP.net
Отлично
Мне кажется, что здесь точно не на 3 надо делить, ведь 3 нечётное, а остаток от деления 3 на 3 это 0.
Ох ёлки, и правда, проглядел. Спасибо за замечание!
Тут нам замечание сделали)
А если $x = 6? Некорректно работает.
Ок. Только двойные кавычки стоит заменить на одинарные. Ну и переменные y и z выглядят слишком ненужными.
Хорошо, понял
это не нужно писать
Для чего присваиваете в переменную $a? Она же нигде не используется.
Для строк используйте одинарные кавычки!
p.s. всё пробовал, всё работает)
Отлично!
?> - в конце файла не ставится
Понял
Отлично
Отлично
Результат:
1.Условие выполнилось
2.
3.
4.Условие выполнилось
Результат:
Число 2 - чётное
Отлично!
Какой еще перебор значений?
Не самый корректный код. Правильнее всё же сравнить результат с числом и уже булево значение использовать в условии.
Отлично. Только после знака равно нужен пробел
Отлично
Всё ок, только код оформляйте
Что?
Оформляйте код в редакторе комментариев. Тернарку использовали неправильно, перечитайте урок + официальную документацию для закрепления.
для чего переменная $isEven?
Отлично
Отлично!
Отлично
Отлично
Т.к. у операторов условий все операнды приводятся к булевому значению, то в данных примерах условие выполнялось, если числа не равны нулю, а строки не пустые.
Отлично
Строка 'string' преобразуется в булево значение true так, как в строке содержатся символы. Условие выполнится.
Число 0 преобразуется в булево значение false так, как 0 в булевой логике это false. Условие не выполнится.
null это ничто (пустое значение), а ничто это false :D. Условие не выполнится.
Число 5 преобразуется в булево значение true так, как любое число кроме 0 равно true. Условие выполнится.
Отлично
Выполняются 1 и 4.
echo $x % 2 ==0 ? 'Четное' : 'Нечетное';
Оформляйте код (в редакторе комментариев самая первая кнопка).
тут нужен пробел.
В остальном ОК.
Строки пишутся в одинарных кавычках.
Я так записал, чтобы он распознал переменную.
Используй конкатенацию строк или sprintf
Понял, спасибо
Для чего переменная $res?
$num % 2 лучше явно сравнить с нулем
И проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Отлично
Ок. Только проблема с форматированием. Делайте отступы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Закрывающий тег ?> в конце файла не нужен.
Отлично
Вот моё домашнее задание, постарался сделать минимум и что-бы было просто в понимание)
Отлично
Мне очень нравится курс и интересные упражнения в конце урока! Спасибо большое. Написала свое решение второго задания и посмотрела предлагаемое решение - верное использование тождественного равенства, ведь правда в значение переменной $number (в моем случае) может быть поставлена строка, как например '9' и тогда при обычном или тождественном равенстве вывод 'число 9 - нечетное' не изменится. Тогда вопрос: почему используется '===' вместо '='? )
Потому что ожидается именно число. Если не уверены в этом, лучше явно привести значение к нужному типу.
Отлично
Супер!
Отлично
Добрый вечер
Результат:
Условие выполнено
Условие выполнено
Условие выполнено
Условие выполнено
Четное
Отлично. Только проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Понял, спасибо.
Результат: Условие 1 выполнилось Условие 4 выполнилось х нечетное
2 и 3 условия приводятся к False, поэтому они не выполнились. 1 и 4 к true.
Для чего двойные кавычки?
Что это за месиво из кавычек?) Строки пишутся в одинарных кавычках.
Скобки не нужны
Почему switch($x)? Разве вы значение $x сравниваете с true?
Всё в одну строку не нужно писать, получается непонятная мешанина.
Всё задание решалось в одну строку, непонятно для чего сделано всё остальное.
Отлично
Ок, только пробел бы еще между числом и буквами добавить
Как то так.
Ок
а вот это неправда
Нашел ошибку.
Либо менять
($x >= 0)
на($x > 0)
тогда будет "число меньше или равно 0",
либо оставлять первый вариант, и убрать "или равно".
Верно
Условия
if ('string') {echo 'Условие выполнилось';} if (5) {echo 'Условие выполнилось';}
выполнятся, потому что булево значение true и код секции будет выполнен.Условия
if (0) {echo 'Условие выполнилось';} if (null) {echo 'Условие выполнилось';}
не выполнятся, потому что приведение к булевому значению вернет false, так как операнд НОЛЬ и null (насколько я понял, null - это отсутствие каких-либо данных, но не пустая строка?!).Тернарный оператор:
Отлично!
ок
тернарный оператор
$x = 4;
$number = $x % 2 == 0 ? 'четное' : 'не четное';
echo $number;
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
Отлично
Снова не совсем было понятно ДЗ.
Надеюсь понял правильно и сделал тоже.
Код:
<?php
$a = 5;
$b = 0;
$c = null;
$d = 4;
$e = 3;
if (is_string($a)) {
echo 'Переменная $a является строкой';}
else {
echo 'Переменная $a не является строкой';
}
echo '<br>';
if ($b == 0) {
echo 'Переменная $b равна нулю';}
else {
echo 'Переменная $b не равна нулю';
}
echo '<br>';
if ($c == null) {
echo 'Переменная $c равна null';}
else {
echo 'Переменная $c не равна null';
}
echo '<br>';
if ($d == 5) {
echo 'Переменная $d равна 5';}
else {
echo 'Переменная $d не равна 5';
}
echo '<br>';
$ChetNeChet = $e % 2 ==0 ? 'Чило $e четное' : 'Число $e нечетное';
echo $ChetNeChet;
Результат
Переменная $a не является строкой
Переменная $b равна нулю
Переменная $c равна null
Переменная $d не равна 5
Число $e нечетное
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого)
P.S. Извините за долгий ответ, дальше будет быстрее.
Отлично
Отлично. Только строки пишите в одинарных кавычках
Ок
Ок. Закрывающий тег ?> в конце файла не нужен.
Отлично
Отлично
Артем, спасибо за уроки!
Сейчас активно начал их изучать, т.к. понадобилось написать несколько простых функций, а без базовых знаний php это конечно нереально.
Я полагаю, что мой вопрос близок к этому уроку, поэтому задам его здесь.
Как записать в условие не равно, а содержит?
Например есть несколько параметров:
Вот функция, которая перезаписывает значения:
А как переписать эту функцию, чтобы выполнялось следующее условие:
Если текст = "Мужчины", то записать "Для мужчин"
Если текст = "Женщины", то записать "Для женщин"
Если текст содержит слово "дети", то записать "Для детей"
Если иное значение, то вообще ничего не записывать.
Спасибо, что помогли мне.
Сработал такой код, наверное с пятой попытки)) Видимо делал ошибки в синтаксисе.
Правда по непонятной причине почему-то VPS сервер перестает справлять с нагрузкой, после запуска такого кода и обрывает соединение с базой данных. Хотя не думаю, что эта функция требует более 1 Гб оперативной памяти.
Сделал так:
А еще методом тыка, я понял 2 вещи:
1) Если убрать return null; то функция запишет то, что было записано первоначально.
2) Если вместо return null; написать return 'Для всех';, то запишется это значение.
Вдруг кому пригодится =)
И еще малюсенький вопрос)))
В таком виде функция регистрозависимая. А как будет выглядеть правильное написание регистронезависимой функции?
В таком случае на первой строке функции можно сразу привести к нижнему регистру входной аргумент:
Ну и дальше везде с маленькими буквами сравнивать
Мне непонятен следующий момент:
Этот код работает верно:
А этот дает ошибку , неожиданное echo:
Необходимо обязательно возвращать переменные?
UPD :
Пока писал вопрос, разобрался:
ето работает верно
Некорректное использование тернарного оператора. Он используется для возврата одного из значений в правой части в левую часть выражения. У вас же он применяется для побочного вызова кода в случае выполнения или невыполнения условия. Используйте в таких случаях if-else.
Отлично
1 и 4 выражения будут выполнены, так как "string" и 5 переводятся в значение true, в то время как 0 и null (отсутствие значения) преобразуются в значение false.
Верно
Отлично
if ('string') {echo 'Условие выполнилось';}
echo '<br>';
if (0) {echo 'Условие выполнилось';} // 0 - false
echo '<br>';
if (null) {echo 'Условие выполнилось';} // null - отсутсвие каких-либо данных
echo '<br>';
if (5) {echo 'Условие выполнилось';}
echo '<br>', 'Проверка на чётность: ' , '<br>' ;
$x = 10;
$isEvenNumber = $x % 2 == 0 ? 'чётное' : 'нечётное';
echo 'Число ' . $x . " " . $isEvenNumber;
Оформляйте код (в редакторе комментариев самая первая кнопка).
Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого)
Отлично!
пожалуйста)
Это нужно было сделать с помощью тернарного оператора