다음은 비교할 두 배열입니다.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] => 배열 ('userid'=> bbb, 'created_time'=> XXXX), 형태 어레이 (AAA = "XXXX, BBB ="XXXX)로 )
?
여기서 할 수있는 것은 배열을'array ('aaa'=> XXXX, 'bbb'=> XXXX)와 같이 변경하는 것뿐입니다. 특히 데이터가이 형식으로되기 전에 작업을 수행 할 수 있다면 (작업에 적합하지 않음). – Jon
모든 사용자 ID가 고유하면 배열 B를'arrayB [user_id] => created_time'에 먼저 매핑 할 수 있습니다. 그런 다음 배열 A를 반복하고 배열 B에서 사용자 ID를 검색하면됩니다 ('O (1)'). 그것은'O (n^2) '대신'O (2n)'주위에 있습니다. –
사용자 ID가 정렬 된 순서입니까? – Jack