簡體   English   中英

將 object 添加到子陣列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM