Чат Telegram
Группа ВКонтакте
Новый комментарий


omk 14.06.2017 в 12:13

Почему '05' == '5' true?
По идее оператору == не надо переводить в int, а сравнить 2 string. Но тогда строка '05' не равна строке '5'.

ivashkevich 14.06.2017 в 19:21

Правильный вопрос! Ответ имеется в официальной документации, вот тут.

omk 15.06.2017 в 08:31

Я немного не то имел ввиду, но ответ нашёл. Оказывается при сравнения типа string, стоки всегда переводятся в числа, а потом сравниваются. Тут

Daniil 07.07.2017 в 10:47

У меня другое отображение:

<?php
$hello = 'Hello ';
$hello .= 'world!';
var_dump($hello);

Результат:

string(12) "Hello world!"
kertsad@gmail.com 06.08.2017 в 21:21

Ты же зпросил не вывод а свойства строки. Вот он и выдал: это строка с 12 символами. Этими символами являются hello world! Чтобы запросить просто вывод пропиши echo $hello, тогда он выведет только то, что написано в строке.

Generalisimus 27.08.2017 в 22:27
<?php
$a=5;
$b=$a!=true;
$c=$a!=0;
$d=$a!=true;
$e=$a=2&&3;
$f=$a=5&&0;
$j=$a=3||0;
$h=$a=5/1;
$k=$a=1/5;
$l=$a="5 + '5string'";
$m=$a='5'==5;
$n=$a='05'==5;
$o=$a='05'=='5';
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
var_dump($f);
var_dump($j);
var_dump($h);
var_dump($k);
var_dump($l);
var_dump($m);
var_dump($n);
var_dump($o);

?>

//Только не пропобал поставить <br/>или \n или \r не получилось

Generalisimus 27.08.2017 в 22:30

результат

bool(true) 
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
int(5)
float(0.2)
string(13) "5 + '5string'" 
bool(true)
bool(true)
bool(true)
Generalisimus 27.08.2017 в 22:31

и еще сам себе рейтинг поставил -1)))жалко нельзя редактировать коммент

ivashkevich 30.08.2017 в 19:20

Спасибо за обратную связь, добавил возможность редактировать комментарии. И оформляйте код с помощью markdown-разметки.

vasyaproject 26.09.2017 в 00:04

Честно говоря, не очень понял, че надо сделать в ДЗ, хорошо бы, если ответы были бы на какой-нибудь странице, чтобы сверить. Что значит получить !1 ? Такой что ли:

$x = !1;
var_dump($x);
ответ bool(false)
ivashkevich 26.09.2017 в 04:02

Доброго времени суток.
Вы все правильно поняли, просто посмотрите чему будут равны значения в той или иной ситувции. Не нужны вам на данном этапе никакие ответы, все у вас прекрасно получается =)

vasyaproject 29.09.2017 в 00:10

ок, спасибо

Tays 13.10.2017 в 21:07

Здравствуйте.
5 + '5string'; - Notice: A non well formed numeric value encountered
Почему нужно обязательно брать кавычки?

ivashkevich 14.10.2017 в 05:56

Здравствуйте. Потому что это строка. А PHP Вас в свою очередь уведомил, что вы складываете строку с числом, что вообще говоря неверно.

bratko 05.03.2019 в 16:30

Так это просто мы должны были увидеть, что PHP нас уведомляет, что нельзя число складывать со строкой или нам нужно ещё что-то с этим сделать?

bratko 05.03.2019 в 16:33

Я понял, что если строка начинается с верного числового значения, будет использовано это значение - и в итоге мы получим int(10).
Но раз выдаёт уведомление "Notice: A non well formed numeric value encountered" - значит так нельзя делать?

ivashkevich 06.03.2019 в 19:26

Да. Так делать нельзя.

serb2017 08.11.2017 в 22:21

!1 is bool(false)
!0 is bool(true)
2 && 3 is bool(true)
5 && 0 is bool(false)
3 || 0 is bool(true)
5 / 1 is int(5)
1 / 5 is float(0.2)
5 + '5string' is int(10)
'5' == 5 is bool(true)
'05' == 5 is bool(true)
'05' == '5' is bool(true)

markEvillive 04.02.2018 в 00:15

Код

<?php
var_dump(!1);//Очевидно, так как 1 это true - bool(false))
echo '<br>';
var_dump(!0);//0 воспринимается как false - bool(true)
echo '<br>';
var_dump(!true);//Очевидно, обратное значение true это false - bool(false))
echo '<br>';
var_dump(2 && 3);//Оба значения не false - bool(true)
echo '<br>';
var_dump(5 && 0);//Второе значение 0 - bool(false)
echo '<br>';
var_dump(3 || 0);//Хотя бы один из операндов (3) true - bool(true)
echo '<br>';
var_dump(5 / 1);//Деление дает целое число - int(5)
echo '<br>';
var_dump(1 / 5);//Деление дает дробное число - float(0,2)
echo '<br>';
var_dump(5 + '5string');//Если строка начинается с верного числового значения, будет использовано это значение  - int(10)
echo '<br>';
var_dump('5' == 5);//Во всех трех следующих случаях работает преобразование строк в числа - bool(true)
echo '<br>';
var_dump('05' == 5);// bool(true)
echo '<br>';
var_dump('05' == '5');//bool(true)
echo '<br>';
?>

Результат

bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
int(5)
float(0.2)
int(10)
bool(true)
bool(true)
bool(true)

P.S: Некоторые трудности возникли с пониманием того, как работает префиксный инкремент и декремент.

ivashkevich 04.02.2018 в 15:34

Трудности ещё остались?

markEvillive 05.02.2018 в 04:38

Нет, попробовал покопаться в инкрементах/декрементах самостоятельно, и понял.

ivashkevich 05.02.2018 в 19:19

Отлично!)

Koala 22.06.2018 в 11:36

Решение

    echo 'ДЗ <br>';
    var_dump(!1);
    echo '<br>';
    var_dump(!0);
    echo '<br>';
    var_dump(!true);
    echo '<br>';
    var_dump(2 && 3);
    echo '<br>';
    var_dump(5 && 0);
    echo '<br>';
    var_dump(3 || 0);
    echo '<br>';
    var_dump(5 / 1);
    echo '<br>';
    var_dump(1 / 5 );
    echo '<br>';
    var_dump(5 + '5string');
    echo '<br>';
    var_dump('5' == 5);
    echo '<br>';
    var_dump('05' == 5);
    echo '<br>';
    var_dump('05' == '5');

Результат

ДЗ 
bool(false) 
bool(true) 
bool(false) 
bool(true) 
bool(false) 
bool(true) 
int(5) 
float(0.2) 

Notice: A non well formed numeric value encountered in C:\Users\Администратор\Documents\WSK\Git\HowToMakeSites-PHP-\1st.steps\3les.php on line 52
int(10) 
bool(true) 
bool(true) 
bool(true)

P.S: Курс понравился буду проходить дальше :smile:

Koala 22.06.2018 в 11:37

Оу, не поддерживает emodji ((

ivashkevich 22.06.2018 в 17:10

Только символы, только хардкор! Удачи в прохождении :)

nemo.dont@gmail.com 23.07.2018 в 16:10

код
echo '!1 ';
var_dump(!1);
echo '<br>';

echo '!0 ';
var_dump(!0);
echo '<br>';

echo '!true ';
var_dump(!true);
echo '<br>';

echo '2 && 3 ';
var_dump(2 && 3);
echo '<br>';

echo '5 && 0 ';
var_dump(5 && 0);
echo '<br>';

echo '3 || 0 ';
var_dump(3 || 0);
echo '<br>';

echo '5 / 1 ';
var_dump(5 / 1);
echo '<br>';

echo '1 / 5 ';
var_dump(1 / 5);
echo '<br>';

echo '5 + \'5string\' ';
var_dump(5 + '5string');
echo '<br>';

echo '\'5\' == 5 ';
var_dump('5' == 5);
echo '<br>';

echo '\'05\' == 5 ';
var_dump('05' == 5);
echo '<br>';

echo '\'05\' == \'5\' ';
var_dump('05' == '5');
echo '<br>';

то что выводится в браузере
!1 bool(false)
!0 bool(true)
!true bool(false)
2 && 3 bool(true)
5 && 0 bool(false)
3 || 0 bool(true)
5 / 1 int(5)
1 / 5 float(0.2)
5 + '5string' int(10)
'5' == 5 bool(true)
'05' == 5 bool(true)
'05' == '5' bool(true)

ivashkevich 23.07.2018 в 19:35

Отлично!

anastasiia.khaliuk@yandex.ru 11.08.2018 в 15:04

Почему-то не получается открыть в браузере, в прошлом задании (делала несколько дней назад) все получалось. Теперь по адресу http://myproject.loc/index.php выдает следующее: "Не удается получить доступ к сайту
Сайт myproject.loc не позволяет установить соединение."

ivashkevich 12.08.2018 в 06:01

OpenServer не запущен =)

Dilik 17.08.2018 в 18:57

Честно говоря чего то не догнал суть домашки...
По идее просто в var_dump проставить все эти выражения?!

ivashkevich 20.08.2018 в 23:04

Да, просто сначала предположите результаты, а затем сравните их с тем, что получается на самом деле.

ArtemijeKA 02.09.2018 в 14:03

Доброго времени суток! Можно узнать, что за расширение показывает разными цветами вывод var_dump(); в браузере?

ivashkevich 02.09.2018 в 14:18

Привет! XDebug. С ним вы еще столкнетесь через пару уроков.

rlean 18.09.2018 в 17:16

Здравствуйте! У меня PHPStorm при написании кода var_dump ( expression: '05' == '5' ); сам добавляет выражение expression: всегда. Избавиться от этого не получилось самостоятельно. Должно ли так быть и на что это влияет? Спасибо!

ivashkevich 22.09.2018 в 20:15

Здравствуйте, в настройках шторма можете убрать, называется "Show parameter name hints"

paradise1983@icloud.com 23.09.2018 в 21:14

Прошу прощения, но если честно непонятно задание.
Что нужно делать с этими значениями?
!1
!0
!true
2 && 3
5 && 0
3 || 0
5 / 1
1 / 5
5 + '5string'
'5' == 5
'05' == 5
'05' == '5'


Я ж могу из через string вывести.
Например, в описываемом уроке не нашёл аналогичные результаты примеров:
!1
!0
!true

ivashkevich 24.09.2018 в 23:03

Здравствуйте, задание просто для того, чтобы ознакомиться с тем, как работает приведение типов в PHP =)
Можно просто проверить себя - предполагаете, какой должен получиться результат и смотрите что на самом деле.

Pavel-Tonk 27.11.2018 в 23:32

В части "Логические операторы" ошибка xor – исключающее ИЛИ, вернёт true, только если один из операторов(операндов) true, а другой – false

ivashkevich 28.11.2018 в 22:43

Спасибо, исправил =)

fapchat2@gmail.com 19.01.2019 в 19:07
<?php

$x = 2;
$y = '2';

var_dump($x == $y); //проверка на равенство
var_dump($x === $y); //проверка на тождественное равенство
var_dump($x != $y); //проверка на неравенство
var_dump($x !== $y); //проверка на тождественное неравенство
Результат:

boolean true
boolean false
boolean false
boolean true

Разве во 2 примере не должен быть true, а в 4 - false????

ivashkevich 20.01.2019 в 13:13

Число 2 не является тождественно равным строке '2'. У них разные типы: число и строка.

rashik-2009@yandex.ru 12.02.2019 в 16:57

У меня вопрос по этой ситуации:
Почему 2 && 3 выводит true?
Вот ситуацию (5 && 0) я понял так, так как "0" это по умолчанию false, то оператор && выводит false потому что, одно из значений false.

По поводу ситуации (2 && 3), я предполагаю, что все числа, кроме "0" это true, так?

ivashkevich 12.02.2019 в 17:05

Да, при приведении к bool ненулевые числа будут преобразованы к true.

Nick 04.03.2019 в 03:53

Вкратце, при логических операциях, int и string приводятся к boolean, где 0 и "" (пустая строка) = false, все другие значения = true.

При математических операциях, всегда приводит к int только string, при условии что туда записано число, или строка начинается с числа (все что после числа игнорируется, кстати дробное число тоже нормально "обрезается" из строки), в иных случаях, при попытке привести к int string, php будет ругаться.

При соединении строк int, и boolean (преобразуется в int) переводятся в string. (10->"10", false->"0")

При не строгом сравнении (==, !=), данные приводятся к одному типу, и сравниваются, при строгом (===, !===), сравнивание проходит без приведения типов, сравнение разных типов в этом случае вернет false.

При сравнениях типа <, >, <=, >=, также происходит приведение типов. Также при сравнениях, false = 0, true = 1.

Ну вот как то так. Я ничего не упустил?

ivashkevich 09.04.2019 в 20:59

Верно

eoskatrin11@gmail.com 09.04.2019 в 16:57

Ура! Есть понимание что, откуда и почему!
bool(false) bool(true) bool(false) bool(true) bool(false) bool(true) int(5) float(0.2) int(10) bool(true) bool(true) bool(true)

ivashkevich 09.04.2019 в 20:58

Отлично! =)

Dram 15.04.2019 в 16:23

Добрый день, мне не понятно почему тут результат
var_dump(!1) = bool(false)
var_dump(!0) = bool(true)

То что ! ОТРИЦАНИЕ, возвращает true, если операнд – false, и наоборот,я понял.
Но почему 0 и 1 выдают разный результат, ведь это оба простые числа, тип INT.
Когда мы поставили ! мы изменили тип INT на bool, это я понял. Но с чем сравнение идет? Почему разные результаты - не понял, прошу помочь понять.

Или 0 в пхп по сути синоним false ?

ivashkevich 15.04.2019 в 16:50

0 при преобразовании к boolean приводится к false.

kamil-uzd@yandex.ru 21.05.2019 в 22:15
$var = [!1, !0, !true, 2 && 3, 5 && 0, 3 || 0, 5 / 1, 1 / 5, 5 + '5string', '5' == 5, '05' == 5, '05' == '5'];
for ($v = 0; $v < count($var); $v++)
{
    echo '<br>';
    var_dump($var[$v]);
}

Ответы
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
int(5)
float(0.2)
int(10)
bool(true)
bool(true)
bool(true)

ivashkevich 21.05.2019 в 22:26

Отлично. А можно было и без цикла вывести всё разом через var_dump. Но это очень хорошо, что вы этими знаниями уже обладаете.

kamil-uzd@yandex.ru 21.05.2019 в 22:42

Хорошие уроки очень.
Через var_dump() вы наверное это имели в виду?

$var = [!1, !0, !true, 2 && 3, 5 && 0, 3 || 0, 5 / 1, 1 / 5, 5 + '5string', '5' == 5, '05' == 5, '05' == '5'];
echo '<pre>';
var_dump($var);
echo '</pre>';
ivashkevich 22.05.2019 в 00:54

Именно так!

NrG 11.10.2019 в 01:12

Артем, а логический оператор xor в своей работе используешь?

ivashkevich 11.10.2019 в 05:56

Крайне редко. 1 или 2 раза приходилось за всё время работы применить.

anton-gogo@mail.ru 15.10.2019 в 10:59
var_dump(!1);
var_dump(!0);
var_dump(!true);
var_dump(2 && 3);
var_dump(5 && 0);
var_dump(3 || 0);
var_dump(5 / 1);
var_dump(1 / 5);
var_dump(5 + '5string');
var_dump('5' == 5);
var_dump('05' == 5);
var_dump('05' == '5');
  1. false
  2. true
  3. false
  4. true
  5. false
  6. true
  7. 5
  8. 0.2
  9. 10
  10. true
  11. true
  12. true
ivashkevich 15.10.2019 в 11:03

Отлично

potapkin.andy@gmail.com 31.10.2019 в 16:16
<?php

$x = !1;
$q = !0;
$w = !true;
$e = 2 && 3;
$r = 5 && 0;
$t= 3 || 0;
$y= 5 / 1;
$u = 1 / 5;
$a1 = 5 + '5string';
$b = '5' == 5;
$c = '05' == 5;
$z = '05' == '5';

var_dump($x);
var_dump($q);
var_dump($w);
var_dump($e);
var_dump($r);
var_dump($t);
var_dump($y);
var_dump($u);
var_dump($a1);
var_dump($b);
var_dump($c);
var_dump($z);
ivashkevich 31.10.2019 в 19:20

Отлично

YuraG 03.11.2019 в 22:16

!1 -> false
!0 -> true
!true -> false
2 && 3 -> true
5 && 0 -> false
3 || 0 -> true
5 / 1 -> 5
1 / 5 -> 0.2
5 + '5string' -> 10
'5' == 5 -> true
'05' == 5 -> true
'05' == '5' -> true

ivashkevich 04.11.2019 в 04:08

Отлично

ohaya_kundagu@mail.ru 12.11.2019 в 05:59

bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
int(5)
float(0.2)
int(10)
bool(true)
bool(true)
bool(true)

ivashkevich 12.11.2019 в 19:41

Отлично

pollaltermann@gmail.com 14.11.2019 в 20:47

Добрый день, это правильно:
var_dump(!1);
var_dump(!0);
var_dump(!true);
var_dump(2 && 3);
var_dump(5 && 0);
var_dump(3 || 0);
var_dump(5/1);
var_dump(1/5);
var_dump(5 + "5 string");
var_dump("5"==5);
var_dump("05"==5);
var_dump("05"=="5");

ivashkevich 14.11.2019 в 21:05

Отлично

Логические задачи с собеседований