下面是兩個要比較的數組。php數組比較的有效方法
array_a(
[0] => array('userid' => aaa, 'created_time' => XXXX,),
[1] => array('userid' => bbb, 'created_time' => XXXX,),
[2] => array('userid' => ccc, 'created_time' => XXXX,)
)
array_b(
[0] => array('userid' => aaa, 'created_time' => XXXX,),
[1] => array('userid' => ccc, 'created_time' => XXXX,),
[2] => array('userid' => ddd, 'created_time' => XXXX,)
)
我想檢索所有符合以下條件的元素: array_a的用戶ID是array_b和 array_a的CREATED_TIME比新array_b的
我使用下面的代碼要做到這一點,但它會採取很長一段時間,如果陣列是巨大的。
for array_a{
for array_b{
if (a[user_id] = b[user_id] && a[created_time] > b[created_time]) {
//target got
}
}
}
有什麼辦法可以有效地做這個邏輯嗎?
感謝您的回答。 這些ID是唯一的。如何轉換 array_a( [0] => array('userid'=> aaa,'created_time'=> XXXX,), [1] => array('userid'=> bbb,'created_time'=> XXXX), )
到窗體 陣列(AAA => XXXX,BBB => XXXX) ?
你可以在這裏做的唯一事情就是改變你的數組看起來像'array('aaa'=> XXXX,'bbb'=> XXXX)''。特別是如果你可以在數據獲得這種格式之前做到這一點(這是非常不適合這項工作的)。 – Jon 2012-04-25 08:05:39
如果所有用戶ID都是唯一的,則可以先將數組B映射到'arrayB [user_id] => created_time'。然後你可以迭代數組A並只查找數組B中的用戶ID('O(1)')。那是圍繞'O(2n)'而不是'O(n^2)'。 – 2012-04-25 08:06:23
用戶標識是否按排序順序排列? – Jack 2012-04-25 08:34:07