• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mehrdimensionale Arrays deklarieren

Iago

Neues Mitglied
Hallo,
ich gebe mit php zweidimensionale Arrays in JS aus. Jetzt ist von php aus alles o.k. aber die Fehler kommen bei JS. Folgender Code wird in JS angezeigt:

Code:
var info = new Array();var lat = new Array();var lng = new Array();info['mid'][0] = 'Unternehmen 1 <br/> blabla';info['mid'][1] = 'Unternehmen 2 <br/> blabla';......
lat['mid'][0] = '50.0010400';lat['mid'][1] = '50.2010057';......
lng['mid'][0] = '9.0730700';lng['mid'][1] = '8.2592738';......
Das ganze soll nachher Marker für GMaps geben. Jetzt bekomme ich hier bei info['mid'][0]....

die Fehlerausgabe: can't convert undefined to object
Was ist hier falsch? Vielen Dank! Iago
 
Also gut, jetzt hab ich das mit der Deklarierung so gemacht: info['mid'] = new Array(); Also in php: echo "var info['mid'] = new Array();\n";

Jetzt bekomme ich die ominöse Fehermeldung (Firefox Debugger):
Code:
missing ; before statement

mit einem Pfeil auf die erste eckige Klammer bei: var info['mid'] = new Array();
 
Lass mal das var weg, denn die Variable info hast Du ja schon definiert.
 
Poste doch nochmal das Array das hier generiert wird, in schöner Form. Dann sieht man gleich wo der Fehler sitzt.
 
Code:
   info['mid'] = new Array();
info['west'] = new Array();
info['mid'][0] = ' ';
info['mid'][1] = ' ';
info['mid'][2] = ' ';
info['mid'][3] = ' ';
info['mid'][4] = ' ';
info['mid'][5] = ' ';
info['mid'][6] = ' ';
info['mid'][7] = ' ';
info['mid'][8] = ' ';
info['mid'][9] = ' ';
info['mid'][10] = ' ';
info['mid'][11] = ' ';
info['mid'][12] = ' ';
info['mid'][13] = ' ';
info['mid'][14] = ' ';
info['mid'][15] = ' ';
info['west'][0] = ' ';

Ich hab den Text als Wert der Array-Variablen wegelassen, da das Daten von meiner Arbeit sind,
es handelt sich aber um ganz normales HTML.
Was mich wundert ist, dass die erste Zeile immer eingrückt ausgegeben wird. Ich hab aber in php alles nochmals überprüft, es dürfte keine zusätzliche von Leerzeichen geben. Es ist wie verhext...
 
Ach schei...benkleister, ich habs:
das muss so aussehen, ist ja auch logisch, klar!:
Code:
info = new Array();
info['mid'] = new Array();
info['west'] = new Array();
 
Du solltest dich mal damit auseinandersetzen, was ein Array in JavaScript ist. In JavaScript gibt es keine (im klassichen Sinn) assoziativen Arrays. Was du da machst, ist ein Array als Objekt verwenden.

Es ist im Übrigen auch nicht anzuraten, ein Array mit new Array() zu deklarieren.

Ein Array hat in JavaScript nur numerische Schlüssel. Das kannst du auch ganz leicht damit testen:

PHP:
var a = [];
a["test"] = "test";
console.log(a.length); // 0

// und besser noch:

console.log(a.test); // "test"

Bitte nimm dir die Zeit, dich mit JavaScript-Grundlagen auseinanderzusetzen und wenn du Englisch kannst, kann ich dir nur das Video empfehlen:
Douglas Crockford: The JavaScript Programming Language - YouTube


Info solltest du daher als Objekt definieren:

PHP:
var info = {mid: [], west: []};

In deinem Fall kann ich dir auch nur diese Funktion empfehlen: PHP: json_encode - Manual
 
Zurück
Oben