PHP Uncaught ReferenceError: TEST is not defined

haunt

Lieutenant
Registriert
Juni 2010
Beiträge
584
Hallo zusammen,
vielleicht kann mir jemand helfen.
Ich habe ein Array mit drei Dimensionen und würde gerne in der dritten Dimension etwas suchen:

Code:
 foreach ($result as $element){
                foreach($element as $key => $value){
                        $t=0;
                        foreach($value as $subkey => $subvalue){
                        $zTest=$result['array'][$i]['test1'][$t]['test2'];
                        $zVerg='TEST';
                        if ( $zTest == $zVerg ) {
                        echo("<script>console.log($t);</script>");
                                }
                        echo("<script>console.log($zVerg);</script>");
                        $t++;
                        }
... hier geht es weiter

Das ganze funktioniert soweit. Nur die IF Abfrage nicht.
die Variable $t wird soweit hoch gezählt.
Ich möchte in $result['array'][$i]['test1'][$t]['test2'] einen bestimmten String suchen und wenn dieser vorkommt müsste ich eben wissen an welcher Stelle dieser ist.
echo("<script>console.log($zVerg);</script>"); schreibt mir das ganze in die Console. Allerdings wird der IF Wert ignoriert...
Eine Idee was ich da falsch mache?
$t kann ich mir ausgeben lassen, $zVerg aber nicht...

Danke und Gruß
 
Lass dir mal beide Werte ausgeben und schau ob sie irgendwann gleich sind. Du kannst das Array auch folgendermaßen lesbar debuggen:
Code:
echo "<pre>";
print_r($result['array'][$i]['test1'][$t]['test2']);
echo "</pre>";
 
  • Gefällt mir
Reaktionen: playerthreeone
Hab jetzt mal geschaut und das Problem liegt wohl am Array:
"eventType":"TEST","dataType":"NUMBER","value":0,

'value' kann ich mir auswerten lassen
'eventType' geht nicht...
Da kommt der uncaught reference fehler... Komisch
Aber selbst wenn ich mir zVerg ausgeben bekomme ich den Fehler.
 
Ich bin mir jetzt nicht ganz sicher. Aber ein uncaught referenceError hört sich doch eher nach javascript als nach PHP an.
Das Problem ist dann der console.log aus Zeile 10. In $zVerg steht ein String nämlich TEST. Um den String gibt es aber keine Anführungszeichen, also glaubt javascript im console.log eine Variable / Konstante ausgeben zu müssen, und diese ist vermutlich nicht existent.
Du müsstest also wohl etwas in der Art machen:

echo("<script>console.log(\"$zVerg\");</script>");
 
  • Gefällt mir
Reaktionen: playerthreeone, Der Lord und haunt
Danke! also das hat geklappt. zVerg bekomme ich nun als Ausgage.
Und für das Array klappt es jetzt auch. Prima! ( grrr! ) wieso geht das aber in dem Fall nicht für IF?

Edit:
okay liegt an der Iteration:
Im Array sind eigentlich 33 Einträge in der 3. Dimension...

Hab's jetzt erstmal mit einer dusseligen for to schleife gelöst.
Kann ich mir im Array nicht den Wert suchen lassen und den Index zurück erhalten?
 
Zuletzt bearbeitet:
Kannst Du das (Gesamt-)Problem eventuell ein bißchen beschreiben?

Denn in den meisten Fällen ist ein mehrdimensionales Array gar nicht notwendig... und ich sehe da mindest fünf Dimensionen:

Code:
 $result
D1 => ['array'] (assoziativ)
D2 => [$I] (indiziert)
D3 => ['test1'] (assoziativ)
D4 =>[$t] (indiziert)
D5 => ['test2'] (assoziativ)

Sicher, daß man das nicht mit Objekten bzw. einem Array aus Objekten besser, dh. weniger-dimensional lösen kann?
Oder - unter der Annahme daß die Daten nicht mal annähernd einen Würfel voll bekommen -- eine hierarchische (Baum-)Struktur?
Das senkt den erwarteten Ressourcenverbrauch ungemein, im Sinne von Platzbedarf ebenso wie im Sinne der Laufzeit.
 
  • Gefällt mir
Reaktionen: playerthreeone

Ähnliche Themen

Antworten
7
Aufrufe
3.605
R
Antworten
11
Aufrufe
1.833
Zurück
Oben