Обработка нескольких операторов с использованием троичных операторов - PullRequest
0 голосов
/ 03 ноября 2018

Я пробовал как

         foreach ($this->Bay as $k => $obj) {
        $obj->{'BayId'} = ($obj->{'BayId'}=='') ? new MongoDB\BSON\ObjectID(); $obj->{'IsDeleted'} = "No"; : new MongoDB\BSON\ObjectID($obj->{'BayId'});

    }

если это условие ($ obj -> {'BayId'} == '') истинно, есть два оператора состояний, которые необходимо выполнить.

Приведенный выше код выдает ошибку ... Пожалуйста, помогите !!!

Вопрос не связан с ошибкой разбора. Вопрос в том, что если BayId не содержит ничего, он должен иметь возможность перезаписать элемент массива с помощью $ obj -> {'IsDeleted'} = "No"; иначе он не должен ничего делать

Я тоже так пытался

$ obj -> {'BayId'} = ($ obj -> {'BayId'} == '')? $ obj -> {'IsDeleted'} = "Нет";

не работает

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Цель, которую вы пытаетесь достичь, станет более читабельной и понятной, если вы воспользуетесь оператором if. Однако вы можете поступить так:

предположим, что $x=null && $y=null затем, в соответствии с условием, вы хотите, чтобы значения двух переменных были изменены с помощью троичного оператора, вы можете просто сделать

(your condition here)?$x="new value"&&$y="new value too":"";

пример:

$x=$y=null;
($_GET['age']>10)?$x=10&&$y=12:'';

Замечания: я использую некоторую аналогию, потому что я не знаю ваших целей, но принцип один и тот же, независимо от того, чего вы пытаетесь достичь ...

0 голосов
/ 04 ноября 2018

Может быть, вы обнаружите, что не так, когда я организую ваш код следующим образом:

foreach ($this->Bay as $k => $obj) {
    $obj->{'BayId'} = ($obj->{'BayId'}=='') ? new MongoDB\BSON\ObjectID();
    $obj->{'IsDeleted'} = "No";
    : new MongoDB\BSON\ObjectID($obj->{'BayId'});
}

Уверяю вас, это точно такой же код ... Так? :)

...