【发布时间】:2017-11-17 19:37:38
【问题描述】:
下面的代码块会引发变量$booking 未定义的异常。有人能解释一下为什么吗?
if(
trim($request->id)!=''
&& $booking = Booking::find($request->id)
&& $booking->user_id == auth()->user()->id // undefined variable $booking
) {
return response()->json($booking);
}
else {
return response()->json(['message' => 'not found'],404);
}
但是这没有任何问题
if(
trim($request->id)!=''
&& $booking = Booking::find($request->id)
) {
if($booking->user_id == auth()->user()->id)
return response()->json($booking);
}
return response()->json(['message' => 'not found'],404);
【问题讨论】:
-
看看operator precedence。
$booking = Booking::find($request->id)周围需要括号,因为分配的优先级较低。 -
@jh1711 是正确的。 3v4l.org/udBtn 另外,您应该真正使用严格比较
!== '',因为空字符串被 PHP 认为是“false-y”,并且大致等同于许多其他不同类型的 false-y 事物。
标签: php if-statement logical-operators php-7.1