PHP null объединяющий оператор путаница — как использовать в операторе if?

#php

#php

Вопрос:

Обычно я делаю это в PHP для обработки параметров post…

 if (isset($_POST['name'])) {

    echo 'This is the post section';
    echo 'Output Attributes';
    echo $attribute1
    echo $attribute2

} else {

    echo 'The post is empty';

}
 

В попытке упростить вещи я пытаюсь использовать нулевой объединяющий оператор, но я немного сбит с толку. используя пример, у меня есть это..

 $name = $_POST['name'] ?? 'The post is empty';
 

Но как мне заставить это действовать как if оператор, чтобы я мог выводить разные разделы, например?

Комментарии:

1. Возможно, вам было бы лучше использовать троичный оператор, например $name = (isset($_POST['name']) ? "Something" : "The post is empty"); . Не уверен, вы не указали, каким должен быть результат.

2. Вы этого не делаете. Оператор null предназначен для замены простой конструкции, такой как $name = isset($_POST["name"]) ? $_POST["name"] : "default";

Ответ №1:

Это:

 $name = $_POST['name'] ?? 'The post is empty';
 

эквивалентно этому:

 if(isset($_POST['name'])){
  $name = $_POST['name'];
}else{
  $name = 'The post is empty';
}
 

Если вы хотите сделать что-то более сложное, чем это, вы должны использовать свой собственный if/else оператор.

Ответ №2:

Я думаю, это зависит. Одним из способов было бы:

 <?php if ( $_POST['name'] ?? false ) {  } else {} ?>
 

Оператор классный, но он не может делать все. И здесь от этого лучше не становится.