Variablen-Vergleich fehlerhaft!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variablen-Vergleich fehlerhaft!

    Also Leute ich muss das loswerden!

    Ich habe ein script in dem ich Objects aus der mySQL-Abfrage einem Array zuweise. Und nun kommts!!!!!!!

    if ($name[$z]->feld == $abfrage)

    ganz einfach danke ich zumindest

    feld = 10, $abfrage = 0 ->WAHR
    feld = 10, $abfrage = 1 ->WAHR

    vielleicht noch zu sagen "feld" is in mySQL ein mediumint!
    (PS: === hat da auch nicht funktioniert, weil dann war alles falsch - hab mir gar nicht die Arbeit gemacht die von php vergebenen Typen an der Position auszulesen)

    jetzt mach ichs so:

    $abfrage_bugffer = $name[$z]->feld;
    if ($abfrage_buffer == $abfrage)

    dann erst wird die Abfrage endlich mit FALSE ausgegeben!

    Ich habe das Problem jetzt unter Kontrolle, aber ehrlich gesagt - witzig war das nicht! Deswegen meine Frage an euch, ob ihr so ein Problem auch schon mal gehabt habt, bzw. ob irgendjemand eine plausible-Erklärung dafür anbieten kann!

  • #2
    Hmm, auf den ersten Blick nicht. Quelltext?

    Kommentar


    • #3
      Original geschrieben von pekka
      Hmm, auf den ersten Blick nicht. Quelltext?
      neee,
      der quelltext war in beiden versionen einwandfrei
      ich befürchte das php da mist baut

      und dass isses was mir sorgen macht!

      Kommentar


      • #4
        Original geschrieben von konian

        ich befürchte das php da mist baut
        php macht eigentlich nur das was man ihm sagt.

        haste mal die Werte mit echo vor der if ausgegeben?
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          ... Quelltext zeigen!

          Kommentar


          • #6
            Original geschrieben von konian
            neee,
            der quelltext war in beiden versionen einwandfrei
            ich befürchte das php da mist baut

            und dass isses was mir sorgen macht!
            Kann auch an der OOP liegen. Normalerweise geht es ja auch, dass man einen Funktionsnamen in einer Variablen speichern kann und dann einfach $variable('Parameter'); schreiben kann, das gleiche funktioniert in OOP aber so irgendwie nicht $object->$variable('Parameter');, zumindest hatte es bei mir nicht funktioniert. Musste dann einen Umweg über eine andere Funktion gehen, die das Resultat von der Funktion zurücklieferte, die im Parameter übergeben wurde ^^"

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Original geschrieben von pekka
              ... Quelltext zeigen!
              Code:
                function BS_get_unit_count($player, $army, $kind)  					
                					{ global $BS_att_units, $BS_def_units;
                					  $found = 0;
                					  
                					  for ($z=1; $z <= $BS_att_units[0]; $z++)
                					  { $unit_player  = $BS_att_units[$z]->player;
                					    $unit_army    = $BS_att_units[$z]->army;
                					    $unit_kind    = $BS_att_units[$z]->kind;
                					    $unit_shields = $BS_att_units[$z]->shields;
                					    if ($unit_player == $player and 
                					        $unit_army == $army and 
                					        $unit_kind == $kind and 
                					        $unit_shields >= 0)
                					    { $found++; 
                					        					        					  } }
                					  for ($z=1; $z <= $BS_def_units[0]; $z++)
                					  { $unit_player  = $BS_def_units[$z]->player;
                					    $unit_army    = $BS_def_units[$z]->army;
                					    $unit_kind    = $BS_def_units[$z]->kind;
                					    $unit_shields = $BS_def_units[$z]->shields;
                					    if ($unit_player == $kind and 
                					        $unit_army == $army and 
                					        $unit_kind == $kind and 
                					        $unit_shields >= 0)
                					    { $found++; 
                					        					        					  } }
                					  return $found;
                					}
              Das ist der Quellcode - der funktionierende! Schreibt man in die if-abfrage zB statt $unit_player dann direkt $BS_att_units[$z]->player rein, dann wird der Vergleich durchgeführt der diesem entspricht:
              Code:
              if ( strstr($BS_att_units[$z]->player,$player)<>false ....
              Also sobald der 2. Vergleichswert (der ja numerisch ist) im 1. Vergelichwert (der auch numerisch ist) als Zeichen enthalten ist!

              Kommentar

              Lädt...
              X