2013-08-09 2 views
1

동일한 것에 대답해야하는 SO에 another question이 있다는 것을 알고 있습니다. 내 문제는 배열 병합이 어떤 작업을 수행하는지 알지 못한다는 것입니다. 필연적으로 배열을 병합하고 싶지는 않습니다. 배열 순서가 어떻게 될지 이해하지 못합니다.다른 배열의 값 집합에 따라 배열 정렬

누군가 다른 대답이

여기

내가 무엇을 얼마나 나를 위해 작동 여부와 것인지 좀 더 자세히 설명해 주시겠습니까 수와 관련이있는 경우 (배열이 매우 큰 그래서 이것은 단순화)

는 기본적으로 나는

Array (
     [0] => 77, 
     [1] => 72, 
     etc 
,369 같은 순서 배열을 가지고 그런 다음이

Array (
    [0] => stdClass Object (
     [term_id] => 72 
     [name] => name 
     [slug] => slug 
     [term_group] => 0 
     [term_order] => 1 
     [term_taxonomy_id] => 73 
     [taxonomy] => gallery_category 
     [description] => description 
     [parent] => 78 
     [count] => 85) 
    [1] => stdClass Object (
     [term_id] => 77 
     [name] => name 
     [slug] => slug 

     etc, etc, etc, there are a lot of objects in the array 

같은 뭔가를

그래서 첫 번째 배열에 두 번째 배열의 순서를 부과합니다. 순서 배열은 두 번째 배열의 [term_id] 값을 올바른 순서로 유지합니다. 위의 예에서 첫 번째 두 객체의 순서를 반대로 바꾸 겠다는 의미입니다.

답변

3
$order_array = [77, 72]; 

$order_array = array_flip($order_array); 

usort($objects, function($a, $b) use ($order_array) 
{ 
    return $order_array[$a->term_id] - $order_array[$b->term_id]; 
}); 

$order_array 모든 term_id에 대한 항목이 있다고 가정합니다.

0

uksort 할 수 있습니다.

function cmp($a, $b) 
{ 
    $ordering_array=array(0=>77, 1=>72); 
    return $ordering_array[$a] - $ordering_array[$b]; 
} 

$a = array() #etc... 

uksort($a, "cmp");