我尝试过
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'} =='')为true,则需要完成两个声明。
上面的代码抛出错误...请帮助!!!
该问题与解析错误无关。问题是,如果BayId不包含任何内容,则应该可以使用$ obj-> {'IsDeleted'} =“ No”覆盖数组元素;否则它什么都不做
我也尝试过
$ obj-> {'BayId'} =($ obj-> {'BayId'} =='')吗? $ obj-> {'IsDeleted'} =“否”;
它不起作用
答案 0 :(得分:0)
当我这样组织代码时,也许您会发现问题所在:
foreach ($this->Bay as $k => $obj) {
$obj->{'BayId'} = ($obj->{'BayId'}=='') ? new MongoDB\BSON\ObjectID();
$obj->{'IsDeleted'} = "No";
: new MongoDB\BSON\ObjectID($obj->{'BayId'});
}
我向您保证,这是完全相同的代码...那么? :)
答案 1 :(得分:0)
如果使用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:'';
备注:我使用了一个类比,因为我并不真正了解您的对象,但是无论您要实现什么目的,原理都是相同的...