我有兩個簡單的數組。一個是一個帖子數組($ posts),另一個是一個帖子ID數組,應該在流的頂部,就像他們的特色($ featured)。我試圖找到一種有效的方法來循環它們,如果兩個數組中都有一個ID,請將其移動到$ posts數組的開頭,並且移動的數據應該按$ featured ['order']對ASC進行排序,因此,例如,某些職位($個):如何對基於第二個數組的PHP數組進行排序?
Array
(
[ab77] => Status_Update Object
(
[id] => ab77
[title] => Status Update
)
[b4k7] => Status_Update Object
(
[id] => b4k7
[title] => Status Update
)
[4d55] => Status_Update Object
(
[id] => 4d55
[title] => Status Update
)
[13c5] => Status_Update Object
(
[id] => 13c5
[title] => Status Update
)
[3aa2] => Status_Update Object
(
[id] => 3aa2
[title] => Status Update
)
)
,然後一些職位應精選($精選):
Array
(
[13c5] => Array
(
[id] => 13c5
[order] => 1
)
[3a71] => Array
(
[id] => 3a71
[order] => 2
)
[4d55] => Array
(
[id] => 4d55
[order] => 3
)
)
所以$柱陣列應該結束了排序是這樣:
13c5 4d55 ab77 bk47 3aa2
如何在沒有一堆慢循環的情況下執行此操作?
看起來你已經得到了ID爲數組鍵了,所以你不會需要嵌套的循環 - 只有一個和裏面你可以檢查'array_key_exists(「13C5」,$功能))'等 –
如果可能,我會首先正確地構建陣列。這很可能會更快更優雅。這聽起來像你想從兩個現有的查詢中創建一個新的數據陣列。我的建議是創建一個新的查詢,爲您提供所需的數據,而不是操縱現有數據。這可能不適合你的情況,但在很多情況下是這樣。 – DutGRIFF
使用'uksort'使用用戶編寫的比較函數進行排序。該函數應該使用'array_key_exists'來檢查兩個鍵是否位於精選數組中。如果他們都在或不在,用'<'來比較他們。 – Barmar