Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Не работает условие (https://javascript.ru/forum/server/76893-ne-rabotaet-uslovie.html)

Alessio18911 24.02.2019 14:46

Не работает условие
 
Я начинающий в PHP. Есть форма. Если в её поле ввести значение, то этот кусок кода выводит то, что ввели. Но вот если поле пустое, то не выводит ничего, хотя в переменную должно записаться значение "Проверка". Если в разметку подставить $item_name, пишет, что она не определена. Подскажите, что я не так делаю??
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $item_name = $_POST['name'] ?? "Проверка";

    print($item_name);
}

laimas 24.02.2019 18:55

А где вы увидели такой оператор ?? ?
//либо так
$item_name = trim($_POST['name']) ?  trim($_POST['name']) : "Проверка";
//либо так
$item_name = trim($_POST['name']) ?: "Проверка";

Nexus 25.02.2019 09:33

Цитата:

Сообщение от laimas
где вы увидели такой оператор ?? ?

http://php.net/manual/ru/migration70...ll-coalesce-op

Nexus 25.02.2019 09:38

Alessio18911,
Цитата:

Сообщение от Alessio18911
Но вот если поле пустое, то не выводит ничего, хотя в переменную должно записаться значение "Проверка".

Цитата:

Он возвращает первый операнд, если он задан и не равен NULL, а в обратном случае возвращает второй операнд.
У вас в массиве POST есть ключ "name" хранящий пустую строку. Т.к. ключ есть и значение не равно null, то возвращается его значение, т.е. пустая строка.
$item_name = (isset($_POST['name']) and !empty($_POST['name']))?
        $_POST['name']:
        "Проверка";

laimas 25.02.2019 10:21

Семерка, со своими революциями. )

Не надо данные извне проверять на пустоту empty(), один пробел уже не пустая строка. Только предварительно обработав.

Alessio18911 25.02.2019 19:38

Ребята, всем спасибо за быстрые и конкретные ответы! :)


Часовой пояс GMT +3, время: 02:29.