| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
| assoziatives mehrdimensionales Array auslesen
Hi, ich hab ein dynamisches Array erzeugt aus einer Textdatei. Unter Debug-Variablen auflisten bekomm ich das auch richtig angezeigt, aber die Eigenschaft length gibt immer 0 zurück. So sieht das Array aus (siehe unten) Also: Code: trace(arr_groups.length); Bin grad etwas verzweifelt. Ich möchte das komplette Array in einer Schlaufe durchlaufen. (ich tippe mal auf einen massiven Denkfehler) Danke für alle Hinweise Gruß Michael Code: Variable _level0.arr_groups = [Objekt #2, Klasse 'Array'] [
DECKEN-SYSTEME:[Objekt #3, Klasse 'Array'] [
DX-DECKE:[Objekt #4, Klasse 'Array'] [
Prospekte:"Fugenverguß-09_05.pdf|248586|23.11.2006;Sil-DX_Verarbeitungsh.pdf|87149|26.03.2007",
Datenblätter:"DXDECKE_BROSCHUERE.pdf|3242288|28.12.2006;DXDECKE_DATENBL.pdf|90701|05.05.2006",
Prüfberichte, Zertifikate:"Gutachten_Schallschutz_DX.pdf|1246885|09.10.2006;SIL-DX_VERARBEITUNGSHINWEIS.pdf|87149|18.05.2006;Typenpruefung_DX20_12_2009.pdf|1484130|22.12.2004;Typenpruefung_DX24_05_2010.pdf|1452339|25.05.2005",
Ausschreibungstexte:"DX_Decken_20_24.pdf|16558|31.10.2006",
Einbauhinweise:"DXDECKE_BROSCHUERE.pdf|3242288|26.04.2005;DXDECKE_DETAILS.pdf|4276029|12.01.2004",
Diverses, Sonstiges:"DXDECKE_PROSPEKT.pdf|947090|05.05.2006;Fugenverguss-09_05.pdf|248586|23.11.2006"
],
MS-DECKE:[Objekt #5, Klasse 'Array'] [
Prospekte:"MSDECKE_PROSPEKT.pdf|143555|05.05.2006",
Datenblätter:"MSDECKE_DATENBL.pdf|70813|05.05.2006",
Prüfberichte, Zertifikate:"Zulassung_MS_03_2009.pdf|3380580|",
Ausschreibungstexte:"MSDECKE_AUSSCHREIB.pdf|35711|24.10.2003"
],
VMM-VSD-DECKE:[Objekt #6, Klasse 'Array'] [
Prospekte:"VMMDECKE_PROSPEKT.pdf|131367|05.05.2006",
Datenblätter:"VMMDECKE_DATENBL.pdf|67301|05.05.2006",
Prüfberichte, Zertifikate:"Typenpruefung_VMM_02_2010.pdf|2573482|;Zulassung_VMM_08_2009.pdf|2264243|",
Ausschreibungstexte:"VMMDECKE_AUSSCHREIB.pdf|33747|24.10.2003"
]
],
ELEMENT-TREPPEN:[Objekt #7, Klasse 'Array'] [
TREPPE_1-4:[Objekt #8, Klasse 'Array'] [
Prospekte:"DEN_BRO_Treppen_0606.pdf|1778621|03.07.2006;TREPPEN_PROSPEKT.pdf|433277|05.05.2006",
Datenblätter:"TREPPE1_4_DATENBL.pdf|117177|05.05.2006",
Prüfberichte, Zertifikate:"Typenpr_viertelgew_11_2006.pdf|446149|",
Ausschreibungstexte:"Treppen.pdf|31695|31.10.2006",
Diverses, Sonstiges:"DEN_Element_Treppen_0105.pdf|1926920|08.12.2004"
],
TREPPE_2-4:[Objekt #9, Klasse 'Array'] [
Prospekte:"DEN_BRO_Treppen_0606.pdf|1778621|03.07.2006;TREPPEN_PROSPEKT.pdf|731019|14.07.2006",
Datenblätter:"TRE_2_1_4_DATENBL.pdf|209711|05.05.2006",
Prüfberichte, Zertifikate:"Typenpr_halbgew_C_02_2010.pdf|385466|;Typenpr_halbgew_LC_05_2011.pdf|361861|",
Ausschreibungstexte:"Treppen.pdf|31695|31.10.2006",
Diverses, Sonstiges:"DEN_Element_Treppen_0105.pdf|1926920|08.12.2004"
],
TREPPE_GERADE:[Objekt #10, Klasse 'Array'] [
Prospekte:"TREPPEN_PROSPEKT.pdf|433277|05.05.2006",
Datenblätter:"TREP_GER_DATENBL.pdf|109974|05.05.2006",
Prüfberichte, Zertifikate:"Typenpr_ger_Tre_pod_072011.pdf|314031|",
Ausschreibungstexte:"Treppen.pdf|31695|31.10.2006",
Diverses, Sonstiges:"TREP_GER_m_pod_12.pdf|890325|10.09.2002;TREP_GER_m_pod_14.pdf|1011979|10.09.2002;TREP_GER_m_pod_16.pdf|981768|10.09.2002;TREP_GER_m_pod_18.pdf|730881|10.09.2002;TREP_GER_m_pod_20.pdf|754461|10.09.2002;TREP_GER_o_pod_12.pdf|439893|10.09.2002;TREP_GER_o_pod_14.pdf|346835|10.09.2002;TREP_GER_o_pod_16.pdf|345187|10.09.2002;TREP_GER_o_pod_18.pdf|330125|10.09.2002;TREP_GER_o_pod_20.pdf|305397|10.09.2002"
],
TREPPE_SONDER:[Objekt #11, Klasse 'Array'] [
Prospekte:"TREPPEN_PROSPEKT.pdf|433277|17.05.2006",
Datenblätter:"TREP_SONDER_DATENBL.pdf|109974|05.05.2006",
Ausschreibungstexte:"Treppen.pdf|31695|31.10.2006"
]
],
SCHORNSTEIN-SYSTEME:[Objekt #12, Klasse 'Array'] [
ATMOS:[Objekt #13, Klasse 'Array'] [
Prospekte:"ATMOSTWIN_PROSPEKT.pdf|398253|05.05.2006;ATMOS_PROSPEKT.pdf|275881|05.05.2006",
Datenblätter:"ATMOSTWIN_DATENBL.pdf|207914|05.05.2006;ATMOS_DATENBL.pdf|133924|05.05.2006",
Prüfberichte, Zertifikate:"ATMOSTWIN_Zulassung.pdf|1157792|27.10.2004;ATMOSTWIN_Zulassung_L90.pdf|280536|27.10.2004;ATMOS_Zulassung.pdf|1262326|11.03.2003;Z-13_1_1-06-6904_ATMOS_Daem.PDF|739301|;ZulassZ-7-1-1426_ATMOS_0906.PDF|2639749|",
Ausschreibungstexte:"ATMOSTWIN_AUSSCHREIB_1204.pdf|53792|03.12.2004;Ausschr_ATMOS_ghoch_091006.pdf|35317|31.10.2006;Ausschr_ATMOS_Twin_091006.pdf|68442|31.10.2006",
Einbauhinweise:"ATMOSTWIN_EINBAUHIN.pdf|3098814|14.02.2006;Atmos_NT30_EBHW_0906.pdf|3016385|"
],
NT30:[Objekt #14, Klasse 'Array'] [
Prospekte:"NT30_PROSPEKT.pdf|427309|05.05.2006",
Datenblätter:"NT30_DATENBL.pdf|65712|05.05.2006",
Prüfberichte, Zertifikate:"NT30_PRUEFBER_TABUEBER.pdf|109027|01.10.2002;NT30_ZULASSUNG.pdf|2909246|19.05.2003;Zul_Z-7_1-3220_NT30_0906.PDF|3853402|",
Ausschreibungstexte:"Ausschr_NT30_091006.pdf|83493|31.10.2006",
Einbauhinweise:"Atmos_NT30_EBHW_0906.pdf|3016385|"
]
],
STUERZE:[Objekt #15, Klasse 'Array'] [
KOMBI-VR:[Objekt #16, Klasse 'Array'] [
Prospekte:"STUERZE_PROSPEKT.pdf|550238|05.05.2006",
Datenblätter:"KOMVRSTURZ_DATENBL.pdf|127039|05.05.2006;VRSTURZ_DATENBL.pdf|316666|29.04.2005",
Prüfberichte, Zertifikate:"KOMVRSTURZ_PRUEFBER.pdf|1404112|01.10.2002",
Ausschreibungstexte:"KOMVRSTURZ_AUSSCHREIB.pdf|42855|24.10.2003;Stuerze_Saeulen.pdf|20095|31.10.2006",
Einbauhinweise:"V_Sturz_EBHW_1205.pdf|447150|23.11.2006"
],
RS:[Objekt #17, Klasse 'Array'] [
Prospekte:"STUERZE_PROSPEKT.pdf|550238|05.05.2006",
Datenblätter:"RSSTURZ_DATENBL.pdf|167319|05.05.2006",
Ausschreibungstexte:"RSSTURZ_AUSSCHREIB.pdf|42855|24.10.2003;Stuerze_Saeulen.pdf|20095|31.10.2006",
Einbauhinweise:"RSSTURZ_EINBAUHIN.pdf|943318|21.06.2006;RS_Sturz_EBHW_1106.pdf|1446289|23.11.2006",
Diverses, Sonstiges:"RSSTURZ_Stat_Berechnung.pdf|1404112|01.10.2002"
],
VR:[Objekt #18, Klasse 'Array'] [
Prospekte:"STUERZE_PROSPEKT.pdf|877336|05.05.2006",
Datenblätter:"VRSTURZ_DATENBL.pdf|303412|05.05.2006",
Prüfberichte, Zertifikate:"Typenpruefung_Verbundsturz.pdf|1099764|;VRSTURZ_PRUEFBERICHT.pdf|1404112|01.10.2002",
Ausschreibungstexte:"Stuerze_Saeulen.pdf|20095|31.10.2006;VRSTURZ_AUSSCHREIB.pdf|42855|24.10.2003",
Einbauhinweise:"VRSTURZ_EINBAUHIN.pdf|447150|07.12.2005;V_Sturz_EBHW_1205.pdf|447150|23.11.2006"
]
],
WAND-SYSTEME:[Objekt #19, Klasse 'Array'] [
BASE:[Objekt #20, Klasse 'Array'] [
Prospekte:"BASE_PROSPEKT.pdf|953338|03.07.2006",
Datenblätter:"BASE_DATENBL.pdf|203490|05.05.2006",
Prüfberichte, Zertifikate:"Gutachten_WU_BASE.pdf|335517|22.12.2005;Pruefzeugnis_ADICON_08_2009.pdf|1923913|15.03.2005;Typenpruefung_BASE_05_2010.pdf|1373217|25.05.2005",
Ausschreibungstexte:"BASE_Ausschreibung.pdf|20508|31.10.2006",
Einbauhinweise:"Base_EBHW_0906.pdf|999893|"
],
PORA:[Objekt #21, Klasse 'Array'] [
Prospekte:"DEN_BRO_PORAWAND_1106.pdf|559043|03.11.2006",
Einbauhinweise:"PORA-Wand_EBHW_1106.pdf|1414463|23.11.2006"
]
]
] |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
|
etwas unübersichtlich dein post. var a1=new Array(); var a2=[]; das sind arrays und die haben die funktion length var o1=new Object(); var o2={}; das sind objecte (die sehr oft mit arrays verwechselt werden), die haben keine funktion length. zeig mal den script, wie du dein gebilde erzeugst.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
|
Moin, ok, kein Problem: Code: antwort="DECKEN-SYSTEME/DX-DECKE/Prospekte/Fugenverguß-09_05.pdf/248586/23.11.2006; ... ... " // kommt von PHP
arr_antwort=antwort.split(";");
arr_groups=new Array();
for (x=0;x<arr_antwort.length;x++)
{
arr_antwort_parts=arr_antwort[x].split("/");
if (typeof(arr_groups[arr_antwort_parts[0]])=="undefined")
{
arr_groups[arr_antwort_parts[0]]=Array();
}
if (typeof(arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]])=="undefined")
{
arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]]=Array();
}
if (typeof(arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]])=="undefined")
{
arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]]="";
}
if (arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]]!="") {
arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]]+=";";
}
arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]]+=arr_antwort_parts[3];
arr_groups[arr_antwort_parts[0]][arr_antwort_parts[1]][arr_antwort_parts[2]]+="|"+arr_antwort_parts[4]+"|"+arr_antwort_parts[5];
} Gruß Michel PS: Bei mir ergibt: Code: var arr_groups=new Array("");
trace(typeof(arr_groups)); Geändert von Lengen1971 (27-03-2007 um 07:33 Uhr) |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
|
naja, ich zeige dir einen 3cm langen strich und du sollst dann raten zu welcher landesgrenze das stück gehört. so bekommst du nie eine antwort. zumindestens das da ist unfug: if (typeof(xxx)=="undefined") typeof ist niemals undefined versuch mal selbst deinen fehler zu finden, mit dem debugger -siehe meine signatur- kannst du dein programm schrittweisse abarbeiten. auch in der flash-hilfe suchen nach ActionScript 2.0 in Flash - Arbeitshandbuch: "An einem Remote-Standort gespeicherte SWF-Datei debuggen"
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (27-03-2007 um 07:42 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
|
Aha, du wolltest doch diesen Codeschnipsel haben, oder nicht? Was meinst du mit Strich? Mehr Code hab ich nicht, der Debugger zeigt mir ein Array (siehe erster Post) Was genau möchtest du haben, um meine Frage zu beantworten? typeof gibt sehrwohl undefined zurück. Zumindest steht das in meinem Ausgabefenster. Den Tip meinen Fehler selbst zu finden... ganz toll. Warum machst du dir die Mühe zu schreiben? Laß es einfach, vielleicht kann mir jemand anders sagen, wo ich falsch liege. |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
|
na, bist du heute mit dem falschen bein zuerst aufgestanden oder bist du immer so drauf? wenn du etwas abfragst, das noch garnicht definiert wurde, das ist undefined - aber nicht das ergebnis der funktion typeof. ... ... " // kommt von PHP und unsereiner soll jetzt hellsehen, was da kommt und warum es deinen fehler verursacht? du willst doch, das dir geholfen wird? dann musst du auch dafür sorgen, dass man dir helfen kann. also die dazu notwendigen daten liefern und nicht nur teile davon. da ich weder deine php-daten, noch deine fla besitze, kann ich dein programm nicht debuggen. aber du hast das zeugs und somit kannst du das auch selbst machen. meine 'blöde' bemerkung das man das machen kann und wo man die info findet, swf's via server zu debuggen - stimmt, dich darüber zu informieren, das ist natürlich extrem blöd von mir.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #7 (permalink) | |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
| Zitat:
Gruß Michael | |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
| Lösung
Für die anderen geplagten (hihi). Flash verwandelt mehrdim. Arrays anscheinend in Objekte. Die haben keine Array-Funktionen mehr (deswegen kein .length). Um nun ein mehrdim. assoziatives Array auszulesen verwendet man: Code: for (i in myArray) { ... } Code: for (i1 in arr_groups)
{
trace(i1+":");
for (i2 in arr_groups[i1])
{
trace(" "+i2+":");
for (i3 in arr_groups[i1][i2])
{
trace(" "+arr_groups[i1][i2][i3]);
}
}
} Michel @hgseib: Auf die Lösung bin ich durch einen anderen Thread von dir gekommen. Hättest du gleich gesagt, dass Flash keine assoz. Arrays kennt, dann hätten wir uns das erspart. An dieser Stelle... schönen Tag noch ;-) Geändert von Lengen1971 (27-03-2007 um 08:51 Uhr) |
| | |
| | #9 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
| aber 1000%ig nein! wer die length-funktion hat habe ich dir in #2 beschrieben. geht wunderbar _array = [[1, 2, 3], [1, 2, 3, 4, 5]]; trace(_array.length); trace(_array[1].length); _obj={name:"olaf", alter:33} oder anderst geschrieben: _obj=new Object(); _obj.name="olaf"; _obj.alter=33; oder anderst geschrieben: _obj={}; _obj["name"]="olaf"; _obj["alter"]=33; das sind objekte und die haben keine length-funktion. _obj=[]; _obj["name"]="olaf"; hier wandelt flash ein array in ein objekt um; das ist richtig. hat aber nichts mit mehrdimensional zu tun. da waren die flash-designer etwas zu grosszügig - oder zu geizig, je nach dem, wie man es interpretieren will. naja, und was steht hier in #2 ?
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (27-03-2007 um 12:18 Uhr) |
| | |
| | #10 (permalink) |
| industry painter Registriert seit: Aug 2006 Ort: auf'm Pott
Beiträge: 760
|
Lustiger Thread. ![]() Um das ganze vielleicht nochmal begrifflich zu entwirren: ActionScript:
ActionScript:
Ein Array IST ein Objekt - ganz gleich was man mit ihm anstellt und solange man es nicht grade löscht.
__________________ mfg. |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
|
Sers, was ihr beide nicht bedacht habt ist, wenn ein Array wieder ein Array und wieder ein Array enthält. Dann geht die length-Methode eben nicht. Gibt immer 0 zurück. @hgseib: ich hab NIE wie in deinem zweiten Thread ein Object erstellt (siehe Code). Du hattest von Anfang an keinen Bock mein Problem zu verstehen, war´s nicht so? Danke für eure Mühen. Mein Script läuft ... mehr wollt ich ja nicht. Gruß Michael |
| | |
| | #12 (permalink) | |
| Neuer User Registriert seit: Mar 2003
Beiträge: 158
| Zitat:
| |
| | |
| | #15 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.321
| weils so ist :-))))))))) und @edding950 sorry, deine aussage ist falsch. das was das assozieren ausmacht sind die key's. und genau sowas hat flash nicht - nicht für arrays. wenn man die dinge bename't, dann wird, wie nun mehrmals geschrieben, von arrays auf objecte gewechselt (das ist seiten's flash nicht in ordnung - ist aber nunmal so). alle dinger sind in flash vom type objecte abgeleitet. objecte ist die klasse, die am wenigsten kann. arrays haben nicht nur die funktion length, sondern auch split, shift, push, sort usw. usf. das ist alles weg. ergo: keine assoziativen arrays in flash. ein array ist, wenn es sich wie ein array verhält. wer das nicht tut ist keins.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (27-03-2007 um 16:28 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |