2017-05-23 13 views
0

REFによって二つの配列と次出力を比較します言語REFEにPHPは、私が参照によって配列順序(リスト)を持っている

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

任意のアイデア:$aため+新(S)の要素(複数可)でのように、なるように結果($b)それとも?

+2

使用 '' $のB'で新しい要素を取得するにはarray_diff'、およびそれらを追加その結果を得るために '$ a'に渡します。 – Barmar

+0

SOは無料のコーディングサービスではありません。自分で問題を解決しようとする試みが必要です。あなたがそれを働かせることができない場合は、あなたが試したものを投稿してください。 – Barmar

+0

これはとても速いです。私に助けてくれてありがとう、もし誰かを助けることができれば、私はAce_Gentileのようにやります。 G. – gmni

答えて

2

あなたはあなたがまたarray_uniqueを使用できる値のキーを維持するのに興味がない場合の$ A +差($のBA)

$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 
    ) 

をやっ配列インデックスを保持したい場合

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

出力:

array_mergeと
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/en/function.array-merge.php)を使用して、必要な結果を取得します。 – Phylogenesis

+1

@Phylogenesis:OPには順序を保存することについて何も言及されていません。 –

+0

質問から: "私の結果($ b)は、$ aオーダー+新しい(s)エレメントのように" – 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 
) 
関連する問題