Vergleichen Sie die Daten der beiden arrays mit foreach PHP
Ich bin gerade dabei die Daten zu vergleichen, zwei arrays gegen einander. Mein code sieht etwas aus wie folgt:
foreach ($arrayOne as $one) {
$variable = $one['one'];
foreach ($arrayTwo as $two) {
if ($two == $variable) {
echo "Match!";
}
}
}
Allerdings nur vergleicht, gegen die das erste element in $arrayTwo
, es ist nicht die Schleife durch alles $arrayTwo
. Warum ist das so? Darüber hinaus ist es ein EFFIZIENTER Weg, um zu erreichen, was ich versuche zu tun?
SNIPPET ein Array Ein:
array (
0 =>
array (
'paper_item_id' => 1,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Blue',
'prompt' => 'Blue',
'layer' => 1500,
),
1 =>
array (
'paper_item_id' => 2,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Green',
'prompt' => 'Green',
'layer' => 1500,
),
2 =>
array (
'paper_item_id' => 3,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Pink',
'prompt' => 'Pink',
'layer' => 1500,
),
3 =>
array (
'paper_item_id' => 4,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Black',
'prompt' => 'Black',
'layer' => 1500,
),
)
SNIPPET Array Zwei:
array (
0 => 'Blue',
1 => '
Purple Bat Wings',
2 => '
Black Motorbike',
3 => '
Test Scarf',
4 => '
Black',
5 => '
Green',
6 => '
Referee Jersey',
7 => '
Stethoscope',
8 => '
Custom Hoodie',
9 => '
',
)
Sollte es nicht so etwas wie $var2 = $zwei['zwei'] und dann vergleichen Sie es mit der $variable in der if-Anweisung. Bitte zeigen Sie uns Ihre vollständigen code. Dank
Es funktioniert bei mir: ideone.com/xoL6BO Es druckt
Der code vergleicht alle Elemente von $arrayTwo gegen alle "eins" Elemente in $arrayOne. $arrayOne ist das Ergebnis
Es funktioniert bei mir: ideone.com/xoL6BO Es druckt
Match
für die ersten und Dritten Elemente in $arrayTwo
.Der code vergleicht alle Elemente von $arrayTwo gegen alle "eins" Elemente in $arrayOne. $arrayOne ist das Ergebnis
json_decode()
während $arrayTwo ist das Ergebnis einer normalen explode()
.
InformationsquelleAutor user2898075 | 2013-12-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Effizientere Weg wäre, um ein assoziatives array aus der
$arrayOne
Werte:DEMO
Das eigentliche problem in der original code ist, dass die
explode()
code ist wieder ein array, wobei jedes element in$arrayTwo
beginnt mit einem Zeilenumbruch, mit Ausnahme des ersten. Aber die entsprechenden Werte im$arrayOne
nicht über Zeilenumbrüche, so dass Sie nicht übereinstimmen. Sie müssen zum beheben desexplode()
- code, der nicht in die Frage.Bei mir klappt das, siehe demo-link.
Hinzufügen Sie können die Ausgabe von
var_export($arrayOne); var_export($arrayTwo);
zu Ihrer Frage. Vielleicht das problem ist, dass die arrays nicht angelegt haben, werden die Art und Weise, die Sie erwarten.Ich habe nur so getan.
Sollten Sie diese abschneiden, oder fix die
explode
- code, so dass es nicht lassen Sie Zeilenumbrüche.InformationsquelleAutor Barmar
Den
array_diff
(oderarray_diff_assoc
in deinem Fall) Funktion gibt die Werte an, die unterscheidet sich in zwei (oder mehr) arrays. Wenn der Rückgabewert leer ist, Sie unterscheiden sich nicht bei allen.$arrayTwo
mit den Werten 2-Ebene tief in$arrayOne
.InformationsquelleAutor Jite