Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2
Guten Tag,
ich habe zwei Arrays und schaue bezüglich des ersten Arrays mit jedem seiner Elemente, ob es mit einem von den zweiten Array übereinstimmt. Nun ist es leider so, dass dies manchmal funktioniert und manchmal nicht. Ich habe mir es sogar schon ausgeben lassen und mir wird rotzfrech gesagt, dass zwei gleiche Werte nicht gleich sind! Wenn ich im ersten else-Bereich reinsetze
echo $var1[$k]." stimmt nicht mit ".$var2[$i]." überein.";
dann kommen Sachen bei der Ausgabe wie: "Weg stimmt nicht mit Weg überein."
Die Werte sind also wirklich definitiv gleich! Bei Wiederholungen ist es dann zumeist richtig. Mir kommt es so vor, als ob sich neu in die Datenbank gespeicherte Werte - Werte also die das erste mal aus der Datenbank ausgelesen werden - beim Vergleich nicht so funktionieren, wie sie funktionieren sollten. Das ist aber nur eine unlogische These. Ich hab für einfach keine Erklärung. Es ist mittlerweile halb drei und ich weiß immer noch nicht, woran das liegen könnte. Noch eine These ist, dass das Programm zu schnell durch die Schleifen rattert und dabei automatisch Fehler mit reinkommen, aber das kann ich mir auch nicht wirklich vorstellen. Naja.. ich hoffe jemand kann mir helfen.
Hier noch das Nötigste des besseren Verständnisses wegen.
machst, bekommst du ein "nee" zurück.
Wenn du bei Programmiersprachen, welche Referenzen auf komplexe Typen (also alle nicht-Primitives bei Java, Arrays&Hashes bei Perl, Objekte bei PHP, etc.) sind, Vergleiche anstellen möchtest, welche sich um den Inhalt, nicht um die Referenz (Addresse im Speicher) kümmern, dann musst du entsprechend der Programmiersprache die passende Methode wählen.
AW: Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2
Bei PHP überprüft er meines Erachtens schon den Inhalt der Variable, nicht die Referenz.
Was mir bei deinem Code komisch vorkommt,ist, dass wenn 2 Elemente gleich sind, $bool inkrementiert wird, aber bei der Auswertung dann bei $bool==0 ausgegeben wird, dass sie gleich sind. Und was passiert, wenn es mit mehreren Elementen des 2. Arrays übereinstimmt?
So stelle ich mir das vor:
PHP-Code:
for ( $k = 0; $k <= $num1; $k++) { for ( $i = 0; $i <= $num2 $i++) { if ( $var1[$k] == $var2[$i] ) { $bool[$i]=true; } } if( isset($bool)) { foreach ($bool as $i_){ echo $var1[$k] .'stimmt mit '.$var2[$i_].' überein'; }
unset($bool); }
Das ganze funktioniert auch nur wenn das Array numerisch indiziert ist.
AW: Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2
Jo so geht es auch. Die $bool hat für mich den Effekt, dass ich nach der for-Schleife davor weiß, ob es eine Übereinstimmung mindestens einmal gegeben hat oder nicht.
Meinen Fehler habe ich mittlerweile entdeckt. Die Abfrage war zwar richtig, aber ich hatte vergessen, die Werte - bevor ich sie in die DB speicher - zu trimmen. Aber das auch nur bei einigen und bei anderen wiederum wurde getrimmt (das speichern erfolgt in verschiedenen Bereichen der Seite )
So hatte ich mal einen Eintrag wie "Weg" und manchmal einen wie "Weg "
Dann ist natürlich klar, dass er mir sagt, dass es nicht übereinstimmt.
Und wieder was aus seinen Fehlern gelernt. Euch danke für die Hilfe.