TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28.11.2008, 01:29   #1 (permalink)
PC Schrauber
 

Registriert seit: 11.05.2006
Beiträge: 131

Greeven befindet sich auf einem aufstrebenden Ast

Standard 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.

PHP-Code:
for ( $k 0$k $num1$k++)
        {
          for ( 
$i 0$i $num2 $i++)
          {
               if ( 
$var1[$k] == $var2[$i] )
              {
                
$bool++;
              }
              else{}
          }
            if( 
$bool == 0)
            {
              echo 
$var1[$k]." stimmt mit ".$var2[$i]." überein.";
            }
            else{}
         } 
Gruß Christian
Greeven ist offline   Mit Zitat antworten
Alt 28.11.2008, 07:12   #2 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2

Je nach Programmiersprache und Feldinhalt testet du nur, ob Referenzen gleich sind.

z.B. wenn du in Java ein

Code:
String test = \"test\";
String test2 = \"test\";
if(test == test2){
System.out.println(\"gleich\");
}else{
System.out.println(\"nee\");
}
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.

Stringvergleich in Java:
Code:
if(test.equals(test2)){
Stringvergleich in Perl:
Code:
if(test eq test2){
Gruß

tele
tele ist offline   Mit Zitat antworten
Alt 28.11.2008, 22:30   #3 (permalink)
Extrem Performer
 
Benutzerbild von daPR
 

Registriert seit: 19.12.2005
Beiträge: 1.157

daPR sorgt für eine eindrucksvolle AtmosphäredaPR sorgt für eine eindrucksvolle AtmosphäredaPR sorgt für eine eindrucksvolle Atmosphäre

Standard 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.

Geändert von daPR (28.11.2008 um 22:41 Uhr)
daPR ist offline   Mit Zitat antworten
Alt 28.11.2008, 23:04   #4 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2

Ich meinte schon deutlich geschrieben zu haben, dass das bei PHP nur auf Objekte zutrifft

was den Vergleich von arrays angeht, im PHP kontext: php array compare - Google Search

im 2. link finden sich schon einfache Sachen.
tele ist offline   Mit Zitat antworten
Alt 28.11.2008, 23:07   #5 (permalink)
PC Schrauber
 

Registriert seit: 11.05.2006
Beiträge: 131

Greeven befindet sich auf einem aufstrebenden Ast

Standard 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.

Gruß ich
Greeven ist offline   Mit Zitat antworten
Alt 28.11.2008, 23:39   #6 (permalink)
Extrem Performer
 
Benutzerbild von daPR
 

Registriert seit: 19.12.2005
Beiträge: 1.157

daPR sorgt für eine eindrucksvolle AtmosphäredaPR sorgt für eine eindrucksvolle AtmosphäredaPR sorgt für eine eindrucksvolle Atmosphäre

Standard AW: Schauen, ob Elemente aus Array1 übereinstimmen mit Elementen aus Array2

Zitat:
Zitat von tele Beitrag anzeigen
Ich meinte schon deutlich geschrieben zu haben, dass das bei PHP nur auf Objekte zutrifft
Hm stimmt
Dann versteh ich nicht ganz was deine Antwort mit seinem Problem zu tun hat?
Aber egal, hat sich ja nun erledigt.
daPR ist offline   Mit Zitat antworten
Antwort

Stichworte
array, array1, array2, elemente, elementen, for-schleife, übereinstimmen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nur Schwarz/Weiße Elemente Scannen? Mother-Brain Windows & Programme 6 17.05.2010 18:46
[News] Preise in Preisvergleichen müssen mit Preisen in Shops übereinstimmen TweakPC Newsbot News 9 15.03.2010 18:02
Windows Mail - Gelöschte Elemente matsch Windows & Programme 2 07.03.2008 18:41
TECs (Peltier Elemente) redilS Sonstige Hardware 2 21.12.2006 15:50
Startmenü, wenig genutzte Elemente ausgeblendet Buschfunker Windows & Programme 2 22.11.2002 13:25


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved