簡體   English   中英

重新排序包含對象的多維數組

[英]Reorder a multidimensional array containing objects

我有一個看起來像這樣的大數組對象:

$items = Array
(
[0] => stdClass Object
    (
        [id] => 1
        [day] => 2
        [created] => 2014-10-22 21:32:52
    )

[1] => stdClass Object
    (
        [id] => 3
        [day] => 3 
        [created] => 2014-10-22 21:35:19
    )

[2] => stdClass Object
    (
        [id] => 4
        [day] => 3
        [created] => 2014-10-22 21:35:23
    )

)

我需要對其進行重組,以便可以根據日值輸出結果。 例如,所有記錄都與day = 3相關聯,依此類推。

我已經有一個基於一周中幾天的代碼結構,因此我需要為此數組運行一個單獨的循環,以插入與現有結構每天匹配的記錄。

例如:

$wk = array(1 => "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

foreach ($wk as $k => $v) {
   ...
   // insert records from $items 
} 

有沒有辦法重寫我的$ items數組來完成此操作? 如果是,怎么辦? 感謝任何建議。

  • 創建新數組
  • 遍歷舊數組
  • 如果不存在,則在新數組中創建索引
  • 將舊數組的項目添加到新索引

這樣的事情應該起作用:

// Create new array
$daySortedItems = array();

// Iterate over old array
foreach ($items as $item) {
    // Create index in new array if it doesn't exist
    if (! isset($daySortedItems[$item->day])) {
        $daySortedItems[$item->day] = array();
    }

    // Add item of old array to new index
    $daySortedItems[$item->day][] = $item;
}

希望這與您先前的問題結合在一起,可以解決您的問題。 請注意,像這樣拋出熱修復程序被認為是不好的做法。 更好的解決方案是將問題解決在較低的級別:查詢數據庫時,直接在day鍵上索引結果集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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