【发布时间】:2017-12-22 22:10:17
【问题描述】:
我有两个条件 price_id =2 和 price_id = 1 的表格数据和如下数据。
因此,如果weekday_am 列值为null 或empty 或0.00 price_id =2 我需要在price_id = 1 处取该值,并且相同的逻辑将适用于列@987654331 @,weekend_am,weekend_pm。所以我正在做的是我编写了两个具有两个不同条件的查询并使用 foreach 循环检查值。但它给出了错误的结果。
查询代码:
$ArrayTier = BundlePrice::where('bundle_id',$id)->where('price_id','=','2')->get();
$ArrayDefault = BundlePrice::where('bundle_id',$id)->where('price_id','=','1')->get();
foreach($ArrayTier as $value)
{
$bundle_id = $value->bundle_id;
$asset_id = $value->asset_id;
foreach($ArrayDefault as $v)
{
if(!empty($value->weekday_am) || ($value->weekday_am != null))
{
$weekam = $value->weekday_am;
}else{
$weekam = $v->weekday_am;
}
if(!empty($value->weekday_pm) || ($value->weekday_pm != null))
{
$weekpm = $value->weekday_pm;
}else{
$weekpm = $v->weekday_pm;
}
if(!empty($value->weekend_am) || ($value->weekend_am != null))
{
$nonweekam = $value->weekend_am;
}else{
$nonweekam = $v->weekend_am;
}
if(!empty($value->weekend_pm) || ($value->weekend_pm != null))
{
$nonweekpm = $value->weekend_pm;
}else{
$nonweekpm = $v->weekend_pm;
}
}
$primaryArray[] = ['asset_id' => $asset_id,'weekam' => $weekam,'weekpm' => $weekpm,'nonweekam' => $nonweekam,'nonweekpm' => $nonweekpm];
}
对于上面的查询,我弄错了,因为值没有改变它只取price_id =1的最后一行值
以上代码的结果是:
array:3 [▼
0 => array:5 [▼
"asset_id" => 2
"weekam" => 150.0
"weekpm" => 320.0
"nonweekam" => 160.0
"nonweekpm" => 420.0
]
1 => array:5 [▼
"asset_id" => 1
"weekam" => 120.0
"weekpm" => 180.0
"nonweekam" => 220.0
"nonweekpm" => 420.0
]
2 => array:5 [▼
"asset_id" => 4
"weekam" => 120.0
"weekpm" => 320.0
"nonweekam" => 220.0
"nonweekpm" => 420.0
]
]
如果您看到上面的内容,相同的值会在几个地方重复。 但预期结果应如下所示:
array:3 [▼
0 => array:5 [▼
"asset_id" => 2
"weekam" => 150.0
"weekpm" => 300.0
"nonweekam" => 160.0
"nonweekpm" => 400.0
]
1 => array:5 [▼
"asset_id" => 1
"weekam" => 110.0
"weekpm" => 180.0
"nonweekam" => 210.0
"nonweekpm" => 410.0
]
2 => array:5 [▼
"asset_id" => 4
"weekam" => 120.0
"weekpm" => 320.0
"nonweekam" => 220.0
"nonweekpm" => 420.0
]
]
有人可以帮我解决这个问题吗?或者请建议我任何可以在单个查询中执行此操作而不是通过 foreach 循环的 mysql 查询。谢谢你
【问题讨论】:
-
我没有得到你的全部代码,但我认为你正在尝试检查
if ( notEmpty And notNULL)。所以使用&&运算符而不是||运算符 -
预期与您得到的结果在我看来或多或少相同。我没有看到任何重复值
-
@apokryfos : 请检查两个数组中的
nonweekpm值,您将了解我要解释的内容
标签: php mysql arrays laravel foreach