array_diff, um zwei assoziative Arrays zu vergleichen

Lesezeit: 1 Minute

array diff um zwei assoziative Arrays zu vergleichen
freddiefujiwara

Ich verwirre das Verhalten von array_diff

Warum gibt es kein Genre im Diff-Array? Wissen Sie, wie Sie die Angelegenheit lösen können?

-Code

<?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));

Mein Ergebnis:

Array
(
    [contry] => us
)

Aber ich erwarte:

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

Ich glaube, Sie verwenden möchten array_diff_assoc

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

array_diff arbeitet auf der Werte des Arrays und ignoriert die Schlüssel.

Denn der Wert von genre in Ihrem ersten Array ist 1das heißt, wenn der Wert 1 tritt ein für jeden Schlüssel im zweiten Array, dann die genre Der Schlüssel wird aus dem ersten Array entfernt.

Sehen Sie sich Ihre Arrays ohne die Schlüssel an, und Sie werden sehen, was ich meine. Sie haben im Wesentlichen zwei Wertelisten, ['0','v2','1','text','us','1'] und ['v1','v2','0','text','canada','1']. Der einzige Wert aus der ersten Liste, der nicht in der zweiten erscheint, ist 'us'.

Ich schätze, Sie werden wahrscheinlich einen Blick darauf werfen wollen array_key_diff() oder array_diff_assoc().

997130cookie-checkarray_diff, um zwei assoziative Arrays zu vergleichen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy