Multidimensionale Arrays vergleichen PHP?

...komplette Frage anzeigen

5 Antworten

Was genau ist die Ausgabe?? Was gleich is in den Arrays oder was unterschiedlich ist? Kann das Ergebnis nur ein Treffer sein, da nur eine ID?

Es soll lediglich die ids überprüfen und mir den Array mit der fehlenden Id ausgeben.

0

Da gibts was das nennt sich forschleife.

0
@triopasi

Kannst du mir ein Codebeispiel geben wie du das problem lösen würdest?

0

foreach(e1 in 1. array) { foreach(e2 in 2. array) { found = false; if(e1.id == e2.id) found = true; } if(!found) fehlend[] = e1; } hoffe das reich dir bin leider grad am handy. ansonsten schich mir ne freundschaftsanfrage dann schreib ich dir was genaueres

1

das found = false muss direkt unter das erste foreach! hab aufm handy schon die übersicht verloren xD

0

Naja also ganz auf dem Holzweg war ich nicht: 

while ($value = $stmt->fetch(PDO::FETCH_ASSOC)) {

$found = false;
foreach ($json_arr as $element) {
if ($value['id'] != $element['id']) {
$found = true;
}
}
if (!$found) {
$del = $value['id'];
}
}

Danke werd ich kurz Testen

0

Ich verstehe noch nicht ganz, was du in deinen Code-Abschnitten da nun gemacht hast.

Wenn du die Id mit anderen Ids vergleichen möchtest, dann laufe mit einer Schleife durch das Array. Wenn das Array immer sortiert ist, schreibe dir einen Algorithmus für eine binäre Suche.

Also wenn ich verstehe suchst du die Elemente die nicht in beiden enthalten sind ? Von der Mengenlehre aus nennt man das die Symmetrische Differenz. Ich würde 2 verschachtelte foreach schleifen nehmen und auf Gleichheit prüfen. Sollten 2 Werte gleich sein so nutzt du unset() um sie aus den Array zu entfernen. Am Ende hast du dann nur noch alles Werte die einmalig sind. Hoffe ich konnte helfen.


foreach($arrayA as $k=>$v){
foreach($arrayB as $kk=>$vv){
if($v['id'] == $vv['id']){
unset($arrayA[$k]);
unset($arrayB[$kk]);
}
}
}

Über MySQl wäre es aber einfacher mittels Join zu lösen
0

Du hast deine Frage schon selbst beantwortet.
"Vergleichen"

Mal ernsthaft, wegen einer foreach-Schleife stellt man hier doch keine Frage auf --"

Was möchtest Du wissen?