Loading...
Something (11 мар 2025, в 16:49)
$lng = isset($_GET['lng']) ? $_GET['lng'] : '';

$_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)

$_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')

правильное решение данного вопроса


$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')

правильное решение данного вопроса


$lng = filter_input(INPUT_GET, 'lng');
$log = filter_input(INPUT_GET, 'log');
Где ты вычитал что с помощью isset() нельзя проверять элементы массива?

Во-первых, я просто переписал код
$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*

правильный ответ


$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*

правильный ответ


$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:ANd9GcRk0KD75o7jSUeq...HFSS1zYwpg&s
________
посл. ред. 13.03.2025 в 13:20; всего 2 раз(а); by Something
> типизация типов *67*
Something (13 мар 2025, в 13:23)
> типизация типов *67*
Замечание:

Строгая типизация определяется только для объявлений скалярных типов.

То есть происходит типизация типов данного примитива *crazy*


$a = NULL;
$b = '';

var_dump($a == $b); // true - NULL приведен к пустой строке
var_dump($a === $b); // false - ПРОВАЛ


Научись читать документацию:


// Элемент с ключом "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
единственный и правильный ответ


$lng = filter_input(INPUT_GET, 'lng');
$log = filter_input(INPUT_GET, 'log');
Вилы Выкидные (13 мар 2025, в 13:55)
Замечание:

Строгая типизация определяется только для объявлений скалярных типов.

То есть происходит типизация типов данного примитива *crazy*


$a = NULL;
$b = '';

var_dump($a == $b); // true - NULL приведен к пустой строке
var_dump($a === $b); // false - ПРОВАЛ


Научись читать документацию:


// Элемент с ключом "hello" равен NULL, поэтому он считается неопределённым.
// Если нужно проверить существование ключей со значением NULL, делают так:
var_dump(array_key_exists('hello', $a)); // TRUE


документация указывает, что элемент может существовать и иметь значение NULL, поэтому использовать нужно array_key_exists и делать это с массивами нужно в любом случае, потому что неизвестно какой элемент может существовать и иметь значение NULL

Вызовите скорую, тут мужику плохо :-D
Онлайн: 3
Время:
Gen. 0.1154
(c) ByMAS.RU 2010-2025