如何使用三元运算符编写此 if..else 条件语句:
How to write this if..else conditional statements with Ternary Operators:
我想用三元运算符编写这个 if..else 语句:
if((($request->city)=="98")&&($cartPrice >= 300000)&&($request->province)=="8")){
"ort_free_delivery" => 'City sending free delivery'
}elseif((($request->city)!="98")&&($cartPrice >=300000)&&($request->province)!="8")){
"ort_free_delivery" => 'Country sending free delivery'
}else{
"ort_free_delivery" => '',
}
这是我的尝试:
( ( ($request->city)=="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)=="8" ) ? "ort_free_delivery" == "City sending free delivery" ) );
( ( ($request->city)!="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)!="8" ) ? "ort_free_delivery" == "Country sending free delivery" : "ort_free_delivery" == "" ) );
但这是错误的,因为有两行三元运算符,而我需要一行中的这个条件(因为我在 Laravel 中插入了一些带有 DB class 的数据):
DB::table('order_detail')->insert([
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
( ( ($request->city)=="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)=="8" ) ? "ort_free_delivery" == "City sending free delivery" ) )
( ( ($request->city)!="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)!="8" ) ? "ort_free_delivery" == "Country sending free delivery" : "ort_free_delivery" == "" ) )
"created_at" => now(),
"updated_at" => now()
]);
所以我的问题是如何在一行中添加带有三元运算符的条件语句?
更新 #1:
我试过这个来检查条件是否有效:
if ($foundOrder != null) {
DB::table('order_detail')->whereOrtOrdId($orderId)->delete();
foreach ($foundOrder as $key => $value) {
$existProduct = DB::table('order_detail')->whereOrtOrdId($orderId)->whereOrtReferenceId($value->id)->exists();
if (empty($existProduct)) {
$price = Product::wherePrdId($value->id)->select('prd_sale_price')->first();
if($request->city==98&&$cartPrice >= 300000&&$request->province==8){
dd('city');
}elseif($request->city!=98&&$cartPrice >=300000&&$request->province!=8){
dd('country');
}else{
$data["ort_free_delivery"] = '';
}
}
}
} else {
DB::table('order_detail')->whereOrtOrdId($orderId)->delete();
}
它正确显示 city
和 country
如果它们的条件 return 为真,
一个选项是
$data=[
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
"created_at" => now(),
"updated_at" => now()
];
if($request->city==98&&$cartPrice >= 300000&&$request->province==8){
$data["ort_free_delivery"] = 'City sending free delivery';
}elseif($request->city!=98&&$cartPrice >=300000&&$request->province!=8){
$data["ort_free_delivery"] = 'Country sending free delivery';
}else{
$data["ort_free_delivery"] = '';
}
然后查询
DB::table('order_detail')->insert($data);
或
DB::table('order_detail')->insert([
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
"ort_free_delivery" =>($request->city==98&&$cartPrice >= 300000&&$request->province==8)?'City sending free delivery':
(($request->city!=98&&$cartPrice >=300000&&$request->province!=8)?'Country sending free delivery':null),
"created_at" => now(),
"updated_at" => now()
]);
我想用三元运算符编写这个 if..else 语句:
if((($request->city)=="98")&&($cartPrice >= 300000)&&($request->province)=="8")){
"ort_free_delivery" => 'City sending free delivery'
}elseif((($request->city)!="98")&&($cartPrice >=300000)&&($request->province)!="8")){
"ort_free_delivery" => 'Country sending free delivery'
}else{
"ort_free_delivery" => '',
}
这是我的尝试:
( ( ($request->city)=="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)=="8" ) ? "ort_free_delivery" == "City sending free delivery" ) );
( ( ($request->city)!="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)!="8" ) ? "ort_free_delivery" == "Country sending free delivery" : "ort_free_delivery" == "" ) );
但这是错误的,因为有两行三元运算符,而我需要一行中的这个条件(因为我在 Laravel 中插入了一些带有 DB class 的数据):
DB::table('order_detail')->insert([
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
( ( ($request->city)=="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)=="8" ) ? "ort_free_delivery" == "City sending free delivery" ) )
( ( ($request->city)!="98" ) ? ($cartPrice>=300000) ? ( ( ($request->province)!="8" ) ? "ort_free_delivery" == "Country sending free delivery" : "ort_free_delivery" == "" ) )
"created_at" => now(),
"updated_at" => now()
]);
所以我的问题是如何在一行中添加带有三元运算符的条件语句?
更新 #1:
我试过这个来检查条件是否有效:
if ($foundOrder != null) {
DB::table('order_detail')->whereOrtOrdId($orderId)->delete();
foreach ($foundOrder as $key => $value) {
$existProduct = DB::table('order_detail')->whereOrtOrdId($orderId)->whereOrtReferenceId($value->id)->exists();
if (empty($existProduct)) {
$price = Product::wherePrdId($value->id)->select('prd_sale_price')->first();
if($request->city==98&&$cartPrice >= 300000&&$request->province==8){
dd('city');
}elseif($request->city!=98&&$cartPrice >=300000&&$request->province!=8){
dd('country');
}else{
$data["ort_free_delivery"] = '';
}
}
}
} else {
DB::table('order_detail')->whereOrtOrdId($orderId)->delete();
}
它正确显示 city
和 country
如果它们的条件 return 为真,
一个选项是
$data=[
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
"created_at" => now(),
"updated_at" => now()
];
if($request->city==98&&$cartPrice >= 300000&&$request->province==8){
$data["ort_free_delivery"] = 'City sending free delivery';
}elseif($request->city!=98&&$cartPrice >=300000&&$request->province!=8){
$data["ort_free_delivery"] = 'Country sending free delivery';
}else{
$data["ort_free_delivery"] = '';
}
然后查询
DB::table('order_detail')->insert($data);
或
DB::table('order_detail')->insert([
"ort_ord_id" => $orderId,
"ort_amount" => $value->price,
"ort_total" => $value->discounted * $value->quantity,
"ort_discount" => ($value->price * $value->quantity) - $value->discounted * $value->quantity,
"ort_type" => "product",
"ort_number" => $value->quantity,
"ort_reference_id" => $value->id,
"ort_free_delivery" =>($request->city==98&&$cartPrice >= 300000&&$request->province==8)?'City sending free delivery':
(($request->city!=98&&$cartPrice >=300000&&$request->province!=8)?'Country sending free delivery':null),
"created_at" => now(),
"updated_at" => now()
]);