[英]adding object to sub-array
我需要按日期對數組進行分組但不工作。 無法將 object 推入子陣列。 以下是我嘗試過的代碼。
$getData = array
(
0 => array
(
'date' => '2017-08-22',
'msg' => '1231',
),
1 => array
(
'date' => '2017-08-21',
'msg' => '1172',
),
2 => array
(
'date' => '2017-08-20',
'msg' => '1125'
),
3 => array
(
'date' => '2017-08-21',
'msg' => '251'
),
4 => array
(
'date' => '2017-08-20',
'msg' => '21773',
),
5 => array
(
'date' => '2017-08-22',
'msg' => '3750'
)
);
$smsArr = [];
foreach ($getData as $xyz => $groupData) {
$isFound = FALSE;
$abc['date'] = $groupData['date'];
$abc['data'] = [(object)["msg" => $groupData['msg']]];
foreach ($smsArr as $key => $value) {
if ($value['date'] == $groupData['date']) {
array_push($value['data'], (object)["msg" => $groupData['msg']]); // nothing happens to final array
$isFound = TRUE;
}
}
if ($isFound == FALSE) {
array_push($smsArr, $abc);
}
}
print_r($smsArr);
試圖按日期對 json 進行分組。 但是當試圖將元素推送到子數組時沒有任何反應。
我應該得到最終結果
Array
(
[0] => Array
(
[date] => 2017 - 08 - 21
[data] => Array
(
[0] => stdClass Object
(
[msg] => 1172
)
[1] => stdClass Object
(
[msg] => 251
)
)
)
[1] => Array
(
[date] => 2017 - 08 - 20
[data] => Array
(
[0] => stdClass Object
(
[msg] => 1125
)
[1] => stdClass Object
(
[msg] => 21773
)
)
)
[2] => Array
(
[date] => 2017 - 08 - 21
[data] => Array
(
[0] => stdClass Object
(
[msg] => 3750
)
[1] => stdClass Object
(
[msg] => 1231
)
)
)
)
當我嘗試 push array_push($value['data'],(object)["msg"=>$groupData['msg']]);
它不會反映在最終數組上。
當您想更改foreach
中的數組時,您應該通過引用傳遞其值。 所以這一行:
foreach ($smsArr as $key => $value)
將其更改為
foreach ($smsArr as $key => &$value)
現在,當您更改$value
時, $smsArr
將會更改。 本文檔將幫助您了解有關該概念的更多信息。 https://www.php.net/manual/en/language.references.pass.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.