Zurück   Flashforum > Flex und AIR > Flex allgemein

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-05-2011, 15:14   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Variable Arrays definieren

Hallo zusammen.

Ich hätte da mal ne Frage zu variablen Arrays innerhalb eines Flex-Projekts.
Es gibt eine variable Anzahl von Spalten innerhalb meines DataGrids und ich möchte diese Werte in jeweils ein Array schreiben um diese dann an PHP zu senden (ohne AMFPHP).

Allerdings schaffe ich es nicht die Arrays zu definieren. Muss ich anders vorgehen?

PHP-Code:
for (var j:int 0werteArray.lengthj++) {    
    var 
tempName:String "array" i;
    var 
this[tempName]:Array = new Array();
... 
Bisher hatte ich mit dem variablen Aufruf immer nur bestehende Elemente aufgerufen. Ich möchte bei meinem Projekt allerdings nicht eine bestimmte Anzahl von Arrays auf verdacht erstellen lassen die am Ende dann nicht ausreichen oder Preformance kosten.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 09-05-2011, 16:31   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
var this[tempName] <-- this kann nicht als var(iable) deklariert werden.
so geht was:
var ary:Array = [];
this[tempName] = ary;
und so geht was:
Code:
var muster:Object = {};
muster['test']='testtext;
muster['ary']={a:13, b:14};
var x:String = 'hallo';
muster[x] = 'hallotext';
//
trace(muster['test']);
trace(muster.test);
trace(muster.ary.a);
trace(muster.ary['b']);
trace(muster.hallo);
ist aber sehr zu empfehlen classen zu schreiben.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (09-05-2011 um 16:37 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 09-05-2011, 17:01   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Danke für die Antwort. Ich werde es nacher gleich mal testen.
Auf die Möglichkeit das mit einem Objekt zu machen bin ich nicht gekommen

Für 3 Zeilen Code die nur an einer Stelle verwendet werden lohnt sich eine Klasse ja nicht unbedingt?! Wahrscheinlich wäre es auch besser für solche Aufgaben auf AMFPHP zu setzen. Allerdings habe ich mit dem System noch nicht gearbeitet.

Ich hatte mir auch schon überlegt ein Query mit den Daten zu senden. Allerdings dürfte das von der Prefomance nicht so besonders gut sein wenn ich jede Zeile aus dem DataGrid an PHP sende. Deswegen lieber alles per Arrays und in PHP verarbeiten lassen

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 10-05-2011, 11:16   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Mahlzeit zusammen.

Ich habe jetzt die Methode gewählt meine Arrays mit toString() an PHP zu senden und dann dort wieder zu Arrays zusammen zu setzen (ja, optimal ist anders).
Allerdings habe ich nun ein Problem mit Daten die Kommas enthalten
Bevor ich jetzt (wiedereinmal) mit Sonderzeichen als Trenner arbeite wollte ich fragen ob es eine andere Methode gibt.
Ich hatte auch schon daran gedacht die Kommas in den jeweiligen Datensätzen durch HTML-Code zu ersetzen. Aber das ist sicherlich auch nicht der richtige Weg?!

Wäre für Vorschläge dankbar.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 10-05-2011, 11:19   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
mal sowas probieren
var test:Array = ['A','B','C'];
trace(test.join('#'));
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 10-05-2011, 12:45   #6 (permalink)
Neuer User
 
Registriert seit: May 2011
Ort: Hamburg
Beiträge: 24
Anstatt von Kommas mit dem #-Zeichen zu arbeiten verschiebt eigentlich nur das Problem. Das # wird zwar seltener eingesetzt, aber es kommt vor.

Encode oder escape könnten Dein Problem lösen. Wenn du zB. alle Leerzeichen per URL-Encode auf %20 umwandelst, dann kannst Du zB. ein Leerzeichen als Trennzeichen zwischen den Arrayeinträge einsetzen. Oder wenn Du per HTML-Encoding alle Kommas in "," umwandelst, kannst Du Deine Arrayeintäge mittel eines nicht encodierten Kommas abgrenzen.

Oder Du verwendest eine fertige Lösung wie zB. AMF oder SerializerClass | Download SerializerClass software for free at SourceForge.net, die nicht nur mit Arrays zurechtkommen, sondern mit fast beliebigen Datenstrukturen.
Malte Köhrer ist offline   Mit Zitat antworten
Alt 10-05-2011, 12:57   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
XML oder JSON wären andere Optionen.
Omega Psi ist offline   Mit Zitat antworten
Alt 10-05-2011, 13:29   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Zitat:
Zitat von Malte Köhrer Beitrag anzeigen
Anstatt von Kommas mit dem #-Zeichen zu arbeiten verschiebt eigentlich nur das Problem. Das # wird zwar seltener eingesetzt, aber es kommt vor.

Encode oder escape könnten Dein Problem lösen. Wenn du zB. alle Leerzeichen per URL-Encode auf %20 umwandelst, dann kannst Du zB. ein Leerzeichen als Trennzeichen zwischen den Arrayeinträge einsetzen. Oder wenn Du per HTML-Encoding alle Kommas in "," umwandelst, kannst Du Deine Arrayeintäge mittel eines nicht encodierten Kommas abgrenzen.

...

Das waren ja zuerst meine Ideen. Aber da ich schon so oft auf Probleme gestoßen bin die auf dem "normalen" Weg nur schwer umzusetzen waren habe ich mir heute mittag frei genommen und lerne ZendAMF (oder AMFPHP). Mal sehn ob ich da durchsteige

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 10-05-2011, 13:54   #9 (permalink)
Neuer User
 
Registriert seit: May 2011
Ort: Hamburg
Beiträge: 24
Hier ein (ungetestetes) Beispiel:

Code:
var myData:Array=[
  "ich bin ein Text mit Sonderzeichen ,.#$",
  "ich nicht"
];

var escapeData:Array=[];
for(var n:int=0; n<myData.length; n++){
  escapedData.push(escape(myData[n]));
}
var serializedArray:String=escapedData.join(";");
Den Inhalt von serializedArray schickst Du dann an PHP.

PHP wiederrum schickt den Wert erst durch explode und erhält damit wieder ein Array mit derzeit noch urlencodeten Werten. Dann gehst Du das Array durch und machst das encoding wieder mit der urldecode()-Funktion rückgängig. Vermutlich musst Du nach dem urldecode auch noch ein utf8_decode über die Inhalte laufen lassen, da Flash intern mit UTF8 arbeitet und PHP mit ISO-8559-1.

ZendAMF ist aber dennoch eine gute Idee, es funktioniert zuverlässig und ist ohne großen Aufwand einsetzbar. Falls Du die Zeit hast, schau es Dir an - und Du wirst nur noch in Ausnahmefällen selbst serialisieren wollen.

Geändert von Malte Köhrer (10-05-2011 um 13:57 Uhr)
Malte Köhrer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arrays extern definieren Mexallon ActionScript 2 8 24-04-2009 12:07
Mehrimensionale Arrays definieren motschow ActionScript 1 1 14-01-2006 14:26
Variable aus einer Variable definieren??? StefNw ActionScript 1 2 13-05-2005 15:16
arrays dynamisch definieren und zuweisen MrPink ActionScript 1 2 23-12-2003 12:45
Variable definieren Nightflyer PHP und MySQL 13 23-10-2003 12:13


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele