$articles = getArticles();
$strId = (int)$strId;
$id = $_GET['id'] ?? '';
$isNormId = ($strId === (string)$id);
$post = $articles['id'] ?? null;
$hasPost = $isNormId && ($post !== null);
$isNormId = ($strId === (string)$id); Я правильно понимаю, это условие так кратко записать можно? Если $strid равна $id, то присвоить это значение в переменную isNormId
PHP
Что означает такое написание кода?
Сравнение - такая же операция, что и сложение или вычитание. И результат сравнения (true или false) можно присвоить переменной - чтобы использовать в дальнейших вычислениях. $isNormId присваивается не значение $id или $strId, а результат проверки равенства этих значений.
Но вот сам код мало того, что некачественный, так ещё и ошибочный.
Во вторых, использование операции строгого сравнения === для операндов двух разных типов ВСЕГДА даёт false. В коде же сравниваются заведомо целое число $strId и заведомо строка $id.
Но вот сам код мало того, что некачественный, так ещё и ошибочный.
$strId = (int)$strId; // значение $strId преобразуем к целому числу
$id = $_GET['id'] ?? ''; // значение $id - строка
$isNormId = ($strId === (string)$id); // $isNormId всегда равно false
$hasPost = $isNormId && ($post !== null); // $hasPost всегда равно false
Во первых, совершенно бессмысленное преобразование строки $id к строке.Во вторых, использование операции строгого сравнения === для операндов двух разных типов ВСЕГДА даёт false. В коде же сравниваются заведомо целое число $strId и заведомо строка $id.
Руслан Ломакин
..а может они индусы, им платят за количество строк?
Язык не знаю. Похоже на макросы.
Андрей Лаврёнов
А, может, доллар ставится перед переменной. Это её отличает от функции.
Да, вы правильно понимаете.
Выражение "$isNormId = ($strId === (string)$id)" присваивает переменной $isNormId значение true, если $strId равна $id (и имеют одинаковый тип данных - строку), и false в противном случае.
А дальше, выражение "$isNormId && ($post !== null)" проверяет, является ли $isNormId true и $post не равным null, и если оба условия выполняются, то присваивает переменной $hasPost значение true, иначе false.
Таким образом, код выполняет проверку наличия статьи по заданному id в массиве статей ($articles), используя значение $id, полученное из массива $_GET. Значение $strId приводится к типу данных int, чтобы обеспечить совместимость с $id, которое является строкой. Затем происходит проверка, совпадают ли $strId и $id, и если да, то проверяется, есть ли статья с указанным id в массиве статей. Если статья существует, то переменной $hasPost присваивается значение true, в противном случае - false.
Выражение "$isNormId = ($strId === (string)$id)" присваивает переменной $isNormId значение true, если $strId равна $id (и имеют одинаковый тип данных - строку), и false в противном случае.
А дальше, выражение "$isNormId && ($post !== null)" проверяет, является ли $isNormId true и $post не равным null, и если оба условия выполняются, то присваивает переменной $hasPost значение true, иначе false.
Таким образом, код выполняет проверку наличия статьи по заданному id в массиве статей ($articles), используя значение $id, полученное из массива $_GET. Значение $strId приводится к типу данных int, чтобы обеспечить совместимость с $id, которое является строкой. Затем происходит проверка, совпадают ли $strId и $id, и если да, то проверяется, есть ли статья с указанным id в массиве статей. Если статья существует, то переменной $hasPost присваивается значение true, в противном случае - false.
>>Что означает такое написание кода?
говнокод.
Вместо адекватной проверки необходимых условий работы скрипта в одном месте и по легко читаемым шагам логика выполнения размазана по разным углам.
Одно сравнение в одной переменной « $isNormId = ($strId === (string)$id); »
Проверка что переменные не являются ложью в другом месте « $hasPost = $isNormId && ($post !== null); » где то дальше в коде будет условное ветвление еще в каком нибудь месте будет обработка ошибки.
Такой стиль написания кода называют « спагетти код » . Его легко писать ваще не заморачиваясь но потом крайне сложно в нем разбираться лучше заранее такое избегать.
говнокод.
Вместо адекватной проверки необходимых условий работы скрипта в одном месте и по легко читаемым шагам логика выполнения размазана по разным углам.
Одно сравнение в одной переменной « $isNormId = ($strId === (string)$id); »
Проверка что переменные не являются ложью в другом месте « $hasPost = $isNormId && ($post !== null); » где то дальше в коде будет условное ветвление еще в каком нибудь месте будет обработка ошибки.
Такой стиль написания кода называют « спагетти код » . Его легко писать ваще не заморачиваясь но потом крайне сложно в нем разбираться лучше заранее такое избегать.

Похожие вопросы
- Что означает "%0A" в коде php?
- При написании php кода для отправки записи в базу данных выходит ошибка
- Как не путаться в своем коде.
- Изучаю php. В книжке дан код программы, объясните для чего строка? (код внутри)
- Вы тоже иногда ищете долго ошибки в коде?
- Структура PHP кода
- Помогите с кодом PHP
- Помогите с PHP кодом! Где косяк?
- Как перевести данный код цикла из кодировки Mysqli в PDO?
- Допиливать самописный движок на PHP, код к которому писали 14 лет - стоит ли соглашаться на такую работу?