2017-05-23 8 views
0

나는 심판에 의해 배열 순서 (목록)이 있습니다PHP는 심판에 의해 두 개의 배열 순서 출력을 비교

$a = array('Blue', 'Red', 'Orange', 'Yellow'); 

을 그리고 새로운 요소 (혼합 순서 + 새로운 요소) : 내가 원하는

$b = array('Orange', 'Blue', 'Yellow', 'Red', 'Pink'); 

을 내

Result : Array 
(
[0] => Blue 
[1] => Red 
[2] => Orange 
[3] => Yellow 
[4] => Pink 
) 

언어 REFE에서 어떤 생각 : 결과 ($b)는 $a 순서 + 새 (들) 요소 (들)처럼 될 수 있습니다 그런가요?

+2

사용'array_diff'는'$ b'의 새로운 요소를 얻고,이를 추가하기 결과를 얻으려면 '$ a'로 변경하십시오. – Barmar

+0

SO는 무료 코딩 서비스가 아닙니다. 문제를 직접 해결해야합니다. 작동시키지 못하면 시도한 것을 게시하고 해결하도록 도와 드리겠습니다. – Barmar

+0

여기 너무 빠릅니다. 도와 주셔서 감사합니다. 누군가를 도울 수 있다면 나는 Ace_Gentile처럼 할 것입니다. G. – gmni

답변

2

당신은 당신이 또한 array_unique를 사용할 수있는 값 키를 유지에 관심이없는 경우 $ a를 + 차이 ($ 바)

$a = array('Blue', 'Red', 'Orange', 'Yellow'); 
$b = array('Orange', 'Blue', 'Yellow', 'Red', 'Pink'); 

$merged = array_merge($a, array_diff($b, $a)); 
print_r($merged); 

출력

Array 
    (
     [0] => Blue 
     [1] => Red 
     [2] => Orange 
     [3] => Yellow 
     [4] => Pink 
    ) 

을하고 배열 인덱스를 유지하려면 array_merge와 :

$merged = array_unique(array_merge($a, $b))); 
print_r($merged); 

출력 :

,
Array 
(
    [0] => Blue 
    [1] => Red 
    [2] => Orange 
    [3] => Yellow 
    [8] => Pink 
) 
+0

반드시 순서가 유지되지는 않습니다. ['array_diff()'] (http://php.net/manual/en/function.array-diff.php)와 ['array_merge()'] (http : // php. net/manual/ko/function.array-merge.php)를 사용하여 원하는 결과를 얻습니다. – Phylogenesis

+1

@Phylogenesis : OP는 순서를 유지하는 것에 대해서는 언급하지 않습니다. –

+0

질문 : "내 결과 ($ b)가 $ 주문 + 새 요소 (")와 같아지기를 바란다 " – Phylogenesis

0

이 솔루션은 usortarray_search 기능을 사용하여 :

$a = ['Blue', 'Red', 'Orange', 'Yellow']; 
$b = ['Orange', 'Blue', 'Yellow', 'Red', 'Pink']; 

usort($b, function($x, $y) use ($a){ 
    $idx_x = array_search($x, $a); 
    $idx_y = array_search($y, $a); 
    if ($idx_x === false || $idx_y === false) return 1; 
    return $idx_x - $idx_y; 
}); 

print_r($b); 

출력 : 배열

(
    [0] => Blue 
    [1] => Red 
    [2] => Orange 
    [3] => Yellow 
    [4] => Pink 
)