5

array_diffの動作を混乱させています

なぜジャンルがdiff配列に存在しないのですか?問題を解決する方法を知っていますか?

-コード

<?php
$array1 = array
(
    'value01' => '0',
    'value02' => 'v2',
    'genre' => '1',
    'type' => 'text',
    'contry' => 'us',
    'data' => '1',
);
$array2 = array
(
    'value01' => 'v1',
    'value02' => 'v2',
    'genre' => '0',
    'type' => 'text',
    'contry' => 'canada',
    'data' => '1',
);

print_r(array_diff($array1,$array2));

私の結果:

Array
(
    [contry] => us
)

しかし、私は期待しています:

Array
(
    [value01] => 0,
    [genre] => 1,
    [contry] => us,
);
4

2 に答える 2

18

使いたいと思いますarray_diff_assoc

http://www.php.net/manual/en/function.array-diff-assoc.php

于 2011-01-20T00:53:06.547 に答える
5

array_diff配列の値を操作し、キーを無視します。

genre最初の配列のの値はであるため、2番目の配列のいずれかのキー1に値1が発生した場合、そのキーは最初の配列から削除されます。genre

キーのない配列を見ると、私が何を意味するのかがわかります。基本的に、値のリストが2つあり['0','v2','1','text','us','1']ます['v1','v2','0','text','canada','1']。最初のリストから2番目に表示されない唯一の値はです'us'

おそらくarray_key_diff( )またはarray_diff_assoc()を見てみたいと思うでしょう。

于 2011-01-20T00:54:35.137 に答える