5

$A2つの配列と$B例をユニオンしたい:

$A = Array(
    0=>array(
            'lable' =>"label0",
            'id_poste'=>1,
            'id_part'=>11
    ),
    1=>array(
            'lable' =>"label1",
            'id_poste'=>2,
            'id_part'=>12
            ),
    2=>array(
            'lable' =>"label2",
            'id_poste'=>3,
            'id_part'=>13
    ),
    3=>array(
            'lable' =>"label3",
            'id_poste'=>4,
            'id_part'=>14
            )
);

$B = Array(
    0=>array(
            'lable' =>"label0",
            'id_poste'=>1,
            'id_part'=>11
    ),
    1=>array(
            'lable' =>"label1_X",
            'id_poste'=>2,
            'id_part'=>12
            ),
    2=>array(
            'lable' =>"label2",
            'id_poste'=>3,
            'id_part'=>13
    ),
    3=>array(
            'lable' =>"label3_X",
            'id_poste'=>4,
            'id_part'=>14
            )
);

これら2つの配列間の結合の結果は次のようになります。

/*
$result => Array(
    0=>array(
            'lable' =>"label0",
            'id_poste'=>1,
            'id_part'=>11
    ),
    1=>array(
            'lable' =>"label1",
            'id_poste'=>2,
            'id_part'=>12
            ),
    2=>array(
            'lable' =>"label1_X",
            'id_poste'=>2,
            'id_part'=>12
            )       
    3=>array(
            'lable' =>"label2",
            'id_poste'=>3,
            'id_part'=>13
    ),
    4=>array(
            'lable' =>"label3",
            'id_poste'=>4,
            'id_part'=>14
            ),
    5=>array(
            'lable' =>"label3_X",
            'id_poste'=>4,
            'id_part'=>14
            )
);
*/

私はで試しました:

$C = $A+$B;
echo '<pre>';
print_r($C);
echo '</pre>'

しかし、結果は私が期待したものではありませんか?誰か助けてくれませんか?

ありがとう

EIDT:

使用する場合array_merge($A, $B);

Array
(
[0] => Array
    (
        [lable] => label0
        [id_poste] => 1
        [id_part] => 11
    )

[1] => Array
    (
        [lable] => label1
        [id_poste] => 2
        [id_part] => 12
    )

[2] => Array
    (
        [lable] => label2
        [id_poste] => 3
        [id_part] => 13
    )

[3] => Array
    (
        [lable] => label3
        [id_poste] => 4
        [id_part] => 14
    )

[4] => Array
    (
        [lable] => label0
        [id_poste] => 1
        [id_part] => 11
    )

[5] => Array
    (
        [lable] => label1_X
        [id_poste] => 2
        [id_part] => 12
    )

[6] => Array
    (
        [lable] => label2
        [id_poste] => 3
        [id_part] => 13
    )

[7] => Array
    (
        [lable] => label3_X
        [id_poste] => 4
        [id_part] => 14
    )

)。

ここに表示されているように、配列が複製されています。つまり、を使用しarray_uniqueていますが、それでもエラーまたは警告が表示されます。

Array to string conversion in C:\Program Files\EasyPHP-12.1\www\PHP\array_union.php on line 86

4

5 に答える 5

6

ちょっとトリッキーな解決策が得られます。A とその差分を B とマージします。この差分を判断するには、array_udiff を使用します。lable キーによる識別に依存しているため、難しいと思います。

$C = array_merge($A, 
            array_udiff($B, $A, 
                        function($a,$b){
                            return strcmp($a['lable'],$b['lable']);
                        }
           )
);
于 2012-12-11T07:31:40.330 に答える
0
array_merge($A, $B);

あなたが探しているものです

于 2012-12-11T07:11:02.993 に答える
0

array_merge()この目的のために使用する

$C = array_merge($A,$B);
echo '<pre>';
print_r($C);
echo '</pre>'

作業例http://codepad.viper-7.com/LrVHn3を参照してください

于 2012-12-11T07:11:23.110 に答える
0
<?php

$input = array_merge( $A, $B );
$input = array_map( "unserialize", array_unique(array_map("serialize", $input)) );

var_dump( $input );
于 2012-12-11T07:50:49.667 に答える
0

これに使用できますarray_merge()..重複を削除する必要があるため、array_unique()....も使用する必要があります

$C = array_unique(array_merge($A,$B), SORT_REGULAR);
echo '<pre>';
print_r($C);
echo '</pre>'

array_uniqueおよびarray_mergeを参照してください

正しい結果が得られます

Array
(
    [0] => Array
        (
            [lable] => label0
            [id_poste] => 1
            [id_part] => 11
        )

    [1] => Array
        (
            [lable] => label1
            [id_poste] => 2
            [id_part] => 12
        )

    [2] => Array
        (
            [lable] => label2
            [id_poste] => 3
            [id_part] => 13
        )

    [3] => Array
        (
            [lable] => label3
            [id_poste] => 4
            [id_part] => 14
        )

    [5] => Array
        (
            [lable] => label1_X
            [id_poste] => 2
            [id_part] => 12
        )

    [7] => Array
        (
            [lable] => label3_X
            [id_poste] => 4
            [id_part] => 14
        )

)
于 2012-12-11T07:15:41.403 に答える