我是一個PHP開發人員,他通常使用數組代替對象,我想知道是否有基於關鍵值的對象操作的最佳做法。如何將PHP對象排列到數組中以供顯示
以下面的多維數組事件爲例,這些事件通常會直接從數據庫中提取出來。
$events = array(
0=>array(
'eventid'=>1,
'title'=>'First Event',
'date'=>'20131010'
),
1=>array(
'eventid'=>2,
'title'=>'Second Event',
'date'=>'20131022'
),
2=>array(
'eventid'=>3,
'title'=>'Third Event',
'date'=>'20131010'
),
),
爲了在我的模板中進行顯示,我希望這是一個基於日期優先的多維數組。這是我使用輔助函數的相當簡單的轉換。
assoc($ events,'date','eventid');
在所得:
$events = array(
20131010=>array(
1 => array(
'eventid'=>1,
'title'=>'First Event',
'date'=>'20131010'
),
3 => array(
'eventid'=>3,
'title'=>'Third Event',
'date'=>'20131010'
),
),
20131022=>array(
2 => array(
'eventid'=>1,
'title'=>'First Event',
'date'=>'20121010'
),
),
),
以這種方式,我可以很容易地通過在模板上側針對每個日期的陣列運行時,創建一個標題和該日期,然後顯示該日下方的事件。
我可以繼續嘗試爲對象創建一個類似的assoc()函數,但它觸發了我應該是一個相當普遍的事情,並且可能有一個標準的方法來做到這一點。如果你有一個對象而不是$ events的數組,那麼你會如何描述格式呢?或者你會怎樣?
另外一條信息:我使用的是CodeIgniter,如果它有一些幫助函數,我不知道這可能會有用。
對於數據檢索或排序方式,對象/數組並沒有太大區別。你所做的是常見的做法,另一種選擇是在你的數據庫查詢中正確排序你的數據。 –
你在說stdObject還是自定義類? –
nl-x,因爲我不知道答案,我猜這是一個問題。但是,如果我var_dump,它說stdObject我相信。它是從CodeIgniter的標準活動記錄調用中檢索到的。 $ query = $ this-> db-> get('events'); return $ query-> result(); – daprezjer