我有一个初始日期数组:
Array ( [0] => 2015-11-23 [1] => 2015-11-24 [2] => 2015-11-25 [3] => 2015-11-26 [4] => 2015-11-27 [5] => 2015-11-28 [6] => 2015-11-29 )
以及另一组"结果":
Array (
[0] => stdClass Object ( [order_date] => 2015-11-24 [SUM(order_total)] => 1458.5 )
[1] => stdClass Object ( [order_date] => 2015-11-25 [SUM(order_total)] => 1540 )
[2] => stdClass Object ( [order_date] => 2015-11-26 [SUM(order_total)] => 1256 )
[3] => stdClass Object ( [order_date] => 2015-11-27 [SUM(order_total)] => 2516.5 )
[4] => stdClass Object ( [order_date] => 2015-11-28 [SUM(order_total)] => 3436.5 ) )
如何创建一个新数组,该数组从初始数组返回日期,并从结果数组返回相应的值(如果存在),但如果不返回 0?
到目前为止,如果$dates是日期数组,$day_of_week_array 是结果数组,我已经尝试过:
foreach ($dates as $date) {
echo $date."<br>";
foreach($day_of_week_array as $day_data){
$day_date = 'order_date';
$total = 'SUM(order_total)';
if ($date === $day_of_week_array->$day_date) {
echo $day_data->$total."<br>";
}
else { }
}
}
然而,这似乎相当复杂,如果日期不匹配(因为数组是嵌套的),则不允许我返回 0,因此违背了练习的目的。
请考虑以下代码:
$result_array = array();
foreach ($dates as $date) {
$found_flag = 0;
echo $date."<br>";
foreach($day_of_week_array as $day_data){
$day_date = 'order_date';
$total = 'SUM(order_total)';
if ($date === $day_of_week_array->$day_date) {
// echo $day_data->$total."<br>";
$temp_array = array(
'date' => $date,
'sum' => $day_data->$total
);
array_push($result_array, $temp_array);
$found_flag = 1;
}
}
if(!$found_flag){
$temp_array = array(
'date' => $date,
'sum' => 0
);
array_push($result_array, $temp_array);
}
}
print_r($result_array); //Your ouptut
尝试使用 -
$new= array();
foreach($day_of_week_array as $day_data) {
// Check if the date exists
if (in_array($day_data->order_date, $dates, true)) {
$new[$day_data->order_date]= array('Date' => $day_data->order_date,
'Total' => $day_data->{'SUM(order_total)'});
}
}
$missed= array_diff($dates, array_keys($new)); // Empty dates
foreach($missed as $d) {
$new[$d]= array('Date' => $d,
'Total' => 0);
}
演示
试试这段代码:)
foreach($results as $result){
if(key_exists($result->order_date, $dates)){
$dates[$result->order_date] = $result->{'SUM(order_total)'};
}
}
在这里,您有$dates
数组,其中包含相应order_date的结果数组中的值。