我有一个名为$dinnerDetails
的数组,看起来像这样
array:5 [▼
0 => array:7 [▼
"request_id" => "48"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => "77"
"new_dinner" => "yes"
"requestCount" => 3
]
1 => array:7 [▼
"request_id" => "51"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => "77"
"new_dinner" => "no"
"requestCount" => 3
]
2 => array:7 [▼
"request_id" => "65"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => null
"new_dinner" => "no"
"requestCount" => 3
]
3 => array:7 [▼
"request_id" => "50"
"dinner_id" => "35"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-27T10:00:00"
"host_id" => "77"
"new_dinner" => "yes"
"requestCount" => 2
]
4 => & array:7 [▼
"request_id" => "52"
"dinner_id" => "35"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-27T10:00:00"
"host_id" => "77"
"new_dinner" => "no"
"requestCount" => 2
]
]
您会注意到每个子阵列都有dinner_id
和host_id
,如果这两个值都存在则表示晚餐已经确认。我想要做的是计算确认的晚餐数量。在dinner_id => 36
之上的数组中已经有2个人确认,dinner_id
=>也是如此。 35,
我想在子数组中添加一个新的key
,让我们调用它confirmationCount
并将确认的计数放在它上面,以便我的输出看起来像这样
array:5 [▼
0 => array:8 [▼
"request_id" => "48"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => "77"
"new_dinner" => "yes"
"requestCount" => 3
"confirmationCount" => 2
]
1 => array:8 [▼
"request_id" => "51"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => "77"
"new_dinner" => "no"
"requestCount" => 3
"confirmationCount" => 2
]
2 => array:8 [▼
"request_id" => "65"
"dinner_id" => "36"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-16T10:00:00"
"host_id" => null
"new_dinner" => "no"
"requestCount" => 3
"confirmationCount" => 2
]
3 => array:8 [▼
"request_id" => "50"
"dinner_id" => "35"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-27T10:00:00"
"host_id" => "77"
"new_dinner" => "yes"
"requestCount" => 2
"confirmationCount" => 2
]
4 => & array:8 [▼
"request_id" => "52"
"dinner_id" => "35"
"dinner_name" => "Black Tie"
"dinner_date" => "2016-05-27T10:00:00"
"host_id" => "77"
"new_dinner" => "no"
"requestCount" => 2
"confirmationCount" => 2
]
]
为此,我写了foreach
循环两次,第一个循环准备数组,第二个循环添加我需要的计数。
$dinnerDetails = array();
$lastDinnerDate = '';
$newDate = '';
$countDinner = array();
$countConfirmation = array();
//Prepare an array of requests so it can be passed back to the controller
foreach ($invitations as $invitation) {
$countDinner[$invitation['dinner_id']] = isset($countDinner[$invitation['dinner_id']]) ? $countDinner[$invitation['dinner_id']] + 1 : 1;
$countConfirmation[$invitation['host_id']] = isset($countConfirmation[$invitation['host_id']]) ? $countConfirmation[$invitation['host_id']] + 1 : 1;
//If the date changes then assign yes, this is used on front end to display date on top of requests
if (strtotime($invitation['dinner_date']) > $lastDinnerDate) {
$newDate = 'yes';
} else {
$newDate = 'no';
}
$lastDinnerDate = strtotime($invitation['dinner_date']);
$dinnerDetails[] = array(
'request_id' => $invitation['request_id'],
'dinner_id' => $invitation['dinner_id'],
'dinner_name' => $invitation['dinner_name'],
'dinner_date' => $invitation['dinner_date'],
'host_id' => $invitation['host_id'],
'new_dinner' => $newDate,
);
}
foreach ($dinnerDetails as &$dinnerDetail) {
$dinnerDetail['requestCount'] = $countDinner[$dinnerDetail['dinner_id']];
$dinnerDetail['confirmationCount'] = $countConfirmation[$dinnerDetail['host_id']];
}
我遇到的问题是在下面的代码中
$countConfirmation[$invitation['host_id']] = isset($countConfirmation[$invitation['host_id']]) ? $countConfirmation[$invitation['host_id']] + 1 : 1;
我需要更新此代码,以便将dinner_id
考虑在内,以便我得到的结果'confirmationCount'与晚餐相关联。现在它会查找host_id
并返回结果,无论确认是否与正确的晚餐相关联。
答案 0 :(得分:0)
此方法基于多维数组。因此,您正在$countConfirmation
以[{1}} $countConfirmation[77][36]
77
host_id
36
dinner_id
的方式向id=36
发送信息。知道按host=77
排序$countConfirmation[$invitation['host_id']] = isset($countConfirmation[$invitation['host_id']]) ? $countConfirmation[$invitation['host_id']] + 1 : 1;
的晚餐数量,所以只需将此信息添加到数组中。
快速的方法是改变:
$countConfirmation[$invitation['host_id']][$invitation['dinner_id']] = isset($countConfirmation[$invitation['host_id']][$invitation['dinner_id']]) ? $countConfirmation[$invitation['host_id']][$invitation['dinner_id']] + 1 : 1;
到
[ "77" :
[
"36" : "2",
"35" : "2"
],
"othe_host_id" :
[
"other_dinner_id" : "count_of_orders",
"other_dinner_id_2" : "count_of_orders_2",
],
]
在此更改后,您将收到双范围数组类型:
$dinnerDetail['confirmationCount'] = $countConfirmation[$dinnerDetail['host_id']];
在你的第二个循环而不是:
host_id
通过2个参数检查信息dinner_id
和$dinnerDetail['confirmationCount'] = $countConfirmation[$dinnerDetail['host_id']][$dinnerDetail['dinner_id']];
:
ng-model-options="{timezone:'UTC'}"