David: vergleich:einzelner wert aus zweidimens. array und variable :(

Guten Abend,
es will mir einfach nicht gelingen diese zwei Variablen miteinander zu vergleichen. Ich suche jetzt schon den ganzen Tag in sämtlichen Beiträgen nach einer möglichen Lösung bzw. nach einem möglichen Fehler und komme einfach nicht drauf. Ich hoffe einer von euch Experten kann mir da weiterhelfen.
Es dreht sich um folgenden Codeausschnitt.

<?php  
$neuesarray = $_SESSION['dasArray'];  
$hilfstitel = $_SESSION['titel'];  
$i = 0;  
  
  
if ($hilfstitel == $neuesarray[$i][0]){  
echo $neuesarray[$i][0];  
echo $neuesarray[$i][2];  
}else{  
echo 'schade';  
}  
  
?>

Als Erklärung:
Ich habe dieser Seite von zwei anderen Seiten einmal ein zweidimensionales Array, in welchem ich den Seitentitel und andere Informationen die ich ausgeben möchte abgespeichert habe und einmal nur einen Seitentitel übergeben.
Nun will ich den Seitentitel aus dem Array mit dem anderen Seitentitel (abgespeichert in $hilfstitel) vergleichen und wenn beide übereinstimmen die anderen Informationen ausgeben.

Das alles klappt super, wenn ich in die if-Bedingung (1==1) reinschreibe, nur eben nicht wenn ich das so versuche wie oben im Code.
Lasse ich mir nur $hilfstitel und $neuesarray[$i][0] per echo-Befehl ausgeben funktioniert dies ebenso einwandfrei und beide stimmen exakt überein.
Wäre einer so lieb mir meinen Fehler aufzuzeigen?

Vielen Dank im Vorraus!
Gruß, David!

  1. Hi,

    Lasse ich mir nur $hilfstitel und $neuesarray[$i][0] per echo-Befehl ausgeben funktioniert dies ebenso einwandfrei und beide stimmen exakt überein.

    Wirklich? Kein Unterschied bzgl. Whitespace?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Habe das Problem gelöst:

      Habe die If-Bedingung durch "if (stristr($hilfe, $neuesarray[$i][0])  == TRUE)" ersetzt. Jetzt funktionierts. Ich bedanke mich für eure schnelle Beteiligung!

      1. Hallo,

        Habe das Problem gelöst:

        nein, durch Wegschauen ist ein Problem nicht gelöst.

        Habe die If-Bedingung durch "if (stristr($hilfe, $neuesarray[$i][0])  == TRUE)" ersetzt. Jetzt funktionierts.

        Das ist logischer Unsinn, denn strstr() (oder auch die "relaxte" Variante mit i) gibt niemals TRUE als Ergebnis zurück, sondern entweder den gesuchten Teilstring oder FALSE. Wenn schon, dann müsste man hier auf !=FALSE prüfen, besser noch auf !==FALSE, also mit Berücksichtigung des Typs.

        Und wenn diese "Lösung" für dich funktioniert, bedeutet das nichts weiter, als dass der Wert von $neuesarray[$i][0] in $hilfe enthalten ist, möglicherweise sogar noch mit abweichender Groß/Kleinschreibung. Vermutlich hat $hilfe ein Leerzeichen oder einen Zeilenumbruch am Ende des Strings, wie Andreas schon angedeutet hat. Wäre es da nicht sinnvoller, diese "Verunreinigung" von vornherein zu vermeiden?
        Und brauchst du wirklich den Vergleich ohne Berücksichtigung von Groß/Kleinschreibung? Unterscheiden sich die Strings in diesem Merkmal? Denn im Startposting hast du noch gesagt, sie seien gleich, aber "Wolle" und "wolle" sind eben *nicht* gleich.

        So long,
         Martin

        --
        Ist die Katze gesund,
        freut sich der Hund.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Tach!

    es will mir einfach nicht gelingen diese zwei Variablen miteinander zu vergleichen. Ich suche jetzt schon den ganzen Tag in sämtlichen Beiträgen nach einer möglichen Lösung bzw. nach einem möglichen Fehler und komme einfach nicht drauf.

    Hast du mal probiert, die Lösung in deinem System zu finden? Was genau hast du für Werte und in welcher Struktur vorliegen, die du zu vergleichen versuchst?

    Es dreht sich um folgenden Codeausschnitt.

    Daraus kann ich den Fehler nicht entnehmen. Ich sehe da lediglich ein paar vermutlich unnötige Variablenumkopierungen, einen Vergleich und Array-Zugriffe. Ob der Code wunschgemäß arbeiten kann, ist wegen des unbekannten Inhalts von $_SESSION nicht analysierbar.

    Ich habe dieser Seite von zwei anderen Seiten einmal ein zweidimensionales Array, in welchem ich den Seitentitel und andere Informationen die ich ausgeben möchte abgespeichert habe und einmal nur einen Seitentitel übergeben.

    Das ist dein Wunsch. Hast du mit var_dump() kontrolliert, ob er mit der Wirklichkeit übereinstimmt? Ebenfalls hilfreich ist ein auf E_ALL gestelltes error_reporting (nebst display_errors auf on).
    Nebenbei: Man kann zwar logisch ein zweidimensionales Array aufbauen, physisch gibt es das aber in PHP nicht. Ein Array ist immer nur eine einfache Ansammlung von Werten. Diese Werte können ihrerseits aber nicht nur skalare Werte sondern auch wieder Arrays oder Objekte sein, woraufhin sich eine verschachtelte Struktur ergibt - die jedoch in jedem Zweig beliebig wachsen kann.

    Das alles klappt super, wenn ich in die if-Bedingung (1==1) reinschreibe, nur eben nicht wenn ich das so versuche wie oben im Code.

    Dann liegt das Problem nicht am Vergleich sondern an den zu vergleichenden Werten.

    Lasse ich mir nur $hilfstitel und $neuesarray[$i][0] per echo-Befehl ausgeben funktioniert dies ebenso einwandfrei und beide stimmen exakt überein.

    Wie hast du die Exaktheit festgestellt? Ein echo lediglich einer Variable ist sehr ungenau. Um annähernd in Richtung "exakt" zu kommen, musst du mindestens noch ein definiertes Zeichen vor und nach der Variable ausgeben, um die Grenzen ihres Inhalts zu erkennen. Aber var_dump() ist einfacher anzuwenden und gibt gleich noch die Länge und den Typ aus - und das auch bei verschachtelten Strukturen. Dabei hilft ein vorangestelltes <pre> oder der Blick in die Quelltextansicht des Browsers.

    dedlfix.