Loading...
Something (11 мар 2025, в 16:49)
$lng = isset($_GET['lng']) ? $_GET['lng'] : '';
php
   $_GET['lng'] = null;  $lng = isset($_GET['lng']) ? $_GET['lng'] : '';  var_dump($lng); // string(0) ""  $lng = array_key_exists('lng', $_GET) ? $_GET['lng'] : '';  var_dump($lng); // NULL   
*CRAZY*
Вилы Выкидные (13 мар 2025, в 6:37)
php
   $_GET['lng'] = null;  $lng = isset($_GET['lng']) ? $_GET['lng'] : '';  var_dump($lng); // string(0) ""  $lng = array_key_exists('lng', $_GET) ? $_GET['lng'] : '';  var_dump($lng); // NULL   
*CRAZY*
$_GET['lng'] = null;

☝️ Ты тут создал элемент массива со значением null. В примере автора его (этого элемента) вообще нет, так что разницы не будет :-)
Something (13 мар 2025, в 6:52)
$_GET['lng'] = null;

☝️ Ты тут создал элемент массива со значением null. В примере автора его (этого элемента) вообще нет, так что разницы не будет :-)
при чём тут есть или нет, смысл моего примера в том, что для проверки наличия элемента массива используется неправильная функция и для неё документация чётко гласит - iseet Определяет, объявили ли переменную и отличается ли её значение от null нужно не из говнокода копипастить примеры, а сначала читать документацию если нам нужно проверить, есть ли в массиве элемент, то используется array_key_exists, а если нам нужно ещё проверить, что переменная пришла извне и детектировать метод, которым она пришла, то используется filter_has_var(INPUT_GET, 'lng'), если нужно присвоение, то filter_input(INPUT_GET, 'lng') правильное решение данного вопроса
php
   $lng = filter_input(INPUT_GET, 'lng'); $log = filter_input(INPUT_GET, 'log');   
Вилы Выкидные (13 мар 2025, в 7:13)
при чём тут есть или нет, смысл моего примера в том, что для проверки наличия элемента массива используется неправильная функция и для неё документация чётко гласит - iseet Определяет, объявили ли переменную и отличается ли её значение от null нужно не из говнокода копипастить примеры, а сначала читать документацию если нам нужно проверить, есть ли в массиве элемент, то используется array_key_exists, а если нам нужно ещё проверить, что переменная пришла извне и детектировать метод, которым она пришла, то используется filter_has_var(INPUT_GET, 'lng'), если нужно присвоение, то filter_input(INPUT_GET, 'lng') правильное решение данного вопроса
php
   $lng = filter_input(INPUT_GET, 'lng'); $log = filter_input(INPUT_GET, 'log');   
Где ты вычитал что с помощью isset() нельзя проверять элементы массива? Во-первых, я просто переписал код
php
   $lng = $_GET['lng'] ?? '';   
, но под php 5. Во вторых, если не считать нюанс с null, (тем более что в массиве GET могут быть только строки), в данном случае isset() подходит лучше чем array_key_exists(), т.к. пишется короче и более производителен. Ненамного, но всё же. Учись *friends*
в документации по isset нет ни единого упоминания о работе с массивами, потому что эта функция из раздела документации ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ, для работы с массивами есть отдельный раздел документации *034* ?? - тернарный оператор объединения с null, в PHP 5 работать не будет, только в PHP 7 и выше, замена на isset невозможна, так как идёт работа с массивом, в котором элемент может СУЩЕСТВОВАТЬ И быть равен NULL isset не будет производительнее, так как это функция для работы с переменными, но не массивами, производительность тут вообще не при чём, потому что интерпретатор запускается один раз и уже запущен нюанс с NULL и пустой строкой не прокатит, если используется строгая типизация типов declare(strict_types=1) - NULL не будет приведен к пустой строке и фокус с возложением интерпретации на плечи PHP - провалится *comando* правильный ответ
php
   $lng = filter_input(INPUT_GET, 'lng'); $log = filter_input(INPUT_GET, 'log');   

________
посл. ред. 13.03.2025 в 12:37; всего 1 раз(а); by Вилы Выкидные
Вилы Выкидные (13 мар 2025, в 12:35)
в документации по isset нет ни единого упоминания о работе с массивами, потому что эта функция из раздела документации ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ, для работы с массивами есть отдельный раздел документации *034* ?? - тернарный оператор объединения с null, в PHP 5 работать не будет, только в PHP 7 и выше, замена на isset невозможна, так как идёт работа с массивом, в котором элемент может СУЩЕСТВОВАТЬ И быть равен NULL isset не будет производительнее, так как это функция для работы с переменными, но не массивами, производительность тут вообще не при чём, потому что интерпретатор запускается один раз и уже запущен нюанс с NULL и пустой строкой не прокатит, если используется строгая типизация типов declare(strict_types=1) - NULL не будет приведен к пустой строке и фокус с возложением интерпретации на плечи PHP - провалится *comando* правильный ответ
php
   $lng = filter_input(INPUT_GET, 'lng'); $log = filter_input(INPUT_GET, 'log');   
> ДЛЯ РАБОТЫ С ПЕРЕМЕННЫМИ
А переменная разве не может содержать массив?

> isset не будет производительнее
Будет, проверяли

А теперь идем в документацию
https://www.php.net/manual/ru/function.isset.php
... и видим что isset() используется в том числе и для массивов *close-tema*

> нюанс с NULL и пустой строкой не прокатит, если используется строгая типизация типов declare(strict_types=1) - NULL не будет приведен к пустой строке и фокус с возложением интерпретации на плечи PHP - провалится *comando*

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRk0KD75o7jSUeqEKC0K5TLoy2YHFSS1zYwpg&s
________
посл. ред. 13.03.2025 в 13:20; всего 2 раз(а); by Something
> типизация типов *67*
Something (13 мар 2025, в 13:23)
> типизация типов *67*
Замечание: Строгая типизация определяется только для объявлений скалярных типов. То есть происходит типизация типов данного примитива *crazy*
php
   $a = NULL; $b = '';  var_dump($a == $b); // true - NULL приведен к пустой строке var_dump($a === $b); // false - ПРОВАЛ   
Научись читать документацию:
php
   // Элемент с ключом "hello" равен NULL, поэтому он считается неопределённым. // Если нужно проверить существование ключей со значением NULL, делают так: var_dump(array_key_exists('hello', $a)); // TRUE   
документация указывает, что элемент может существовать и иметь значение NULL, поэтому использовать нужно array_key_exists и делать это с массивами нужно в любом случае, потому что неизвестно какой элемент может существовать и иметь значение NULL
Btslp (11 мар 2025, в 11:17)
Всем добрый день. есть ошибок в index.php
может подсказать как правильно исправлять?
index.pho закрепил.
1.- Notice: Undefined index: lng in /var/home/swordhos/public_html/index.php on line 5

2.- Notice: Undefined index: log in /var/home/swordhos/public_html/index.php on line 8
единственный и правильный ответ
php
   $lng = filter_input(INPUT_GET, 'lng'); $log = filter_input(INPUT_GET, 'log');   
Вилы Выкидные (13 мар 2025, в 13:55)
Замечание: Строгая типизация определяется только для объявлений скалярных типов. То есть происходит типизация типов данного примитива *crazy*
php
   $a = NULL; $b = '';  var_dump($a == $b); // true - NULL приведен к пустой строке var_dump($a === $b); // false - ПРОВАЛ   
Научись читать документацию:
php
   // Элемент с ключом "hello" равен NULL, поэтому он считается неопределённым. // Если нужно проверить существование ключей со значением NULL, делают так: var_dump(array_key_exists('hello', $a)); // TRUE   
документация указывает, что элемент может существовать и иметь значение NULL, поэтому использовать нужно array_key_exists и делать это с массивами нужно в любом случае, потому что неизвестно какой элемент может существовать и иметь значение NULL
☝️
Вызовите скорую, тут мужику плохо :-D
Онлайн: 4
Время:
Gen. 0.1021
(c) Bym.Guru 2010-2026