PHP-Array in JavaScript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anzahl
array
atomkraft
ausgeben
auslese
beruf
braun beruf
code
entenhausen
haarfarbe
nachname
physiker
rein code
schleife
test
typ
url
vorname
zeiger
-
Hi, Leute!
Ich möchte gerne ein PHP-Array so "ausgeben", dass es von JavaScript direkt als solches erkannt wird.
Ziel ist es also, aus einem PHP-Array ein JS-Array zu machen...
Bei numerisch-orientierten Arrays kein Problem; man kann dann einfach in einer simplen FOR-Schleife alles ausgeben:
for ($zaehler=0; $zaehler<count($array); $zaehler++){ echo 'array['.$zaehler.']="'.$array[$zaehler].'";'; }
Doch wie kann man das bei Text-orientierten Arrays wie
machen???$array['text']='blablabla';
Bitte um Hilfe! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Guten Abend!
Das sollte mir
ganz gut funktionieren:foreach()
http://php.net/manual/de/control-structures.foreach.php
Unten sind auch schon einige Beispiele angegeben, die dem, was du machen möchtest, sehr nahe kommen dürften.
Till ;) -
Beispiel
PHP Array
$data = array(); $data['vorname'] = "Hans"; $data['nachname'] = "Dampf"; $data['adresse'] = "Entenhausen"; $data['beruf'] = "Plauderer";
PHP Array als JS Array
<?php echo "jsarray = new Array(); \r\n"; foreach ($data as $key => $value) { echo "jsarray['".$key."'] = '".$value."'; \r\n"; } ?>
und bei mehrdimensionalen Arrays einfach noch ein for-Schleife drum herum mit rein
$data[0]['vorname'] = "Hans"; $data[0]['nachname'] = "Dampf"; $data[0]['adresse'] = "Steamcity"; $data[0]['beruf'] = "Plauderer"; $data[1]['vorname'] = "Dagobert"; $data[1]['nachname'] = "Duck"; $data[1]['adresse'] = "Entenhausen"; $data[1]['beruf'] = "Geldhai"; $data[2]['vorname'] = "Albert"; $data[2]['nachname'] = "Einstein"; $data[2]['adresse'] = "Labor"; $data[2]['beruf'] = "Physiker";
<?php echo "jsarray = new Array(); \r\n"; $anzahl = count($data); for ($x=0; $x<$anzahl; $x++) { $subdata = $data[$x]; foreach ($subdata as $key => $value) { echo "jsarray[".$x."]['".$key."'] = '".$value."'; \r\n"; } } ?>
-
Man kann auch ein mehrdimensionales Array (ja auch ein indiziertes )einfach mit mehreren verschachtelten foreach-Schleifen auslesen, dann muss man sich da keine for-Schleife drumherum basteln. Meine Meinung nach ist das die elegantere Lösung.
Beitrag zuletzt geändert: 14.12.2011 12:31:15 von alfr3d -
Hab' mich schon immer gafragt, wofür diese Funktion gut ist. Vielen Dank!
@alfr3d: Kommt immernoch auf den Array-Typ an... Bei numerischen ist das halt einfacher... -
Habe gerade selber noch 'ne hervorragende Möglichkeit gefunden: PHP5-Iterator!
Beispiel von phpBuddy.eu:
$person = array( "Vorname" => "Max", "Nachname" => "Mustermann", "Alter" => 39, "Haarfarbe" => "Braun", "Beruf" => "Rauhhaardackelzüchter" ); $PersonObjekt = new ArrayObject( $person ); $zeiger = $PersonObjekt->getIterator(); for ($zeiger->rewind(); $zeiger->valid(); $zeiger->next()) { echo $zeiger->key(). ": " .$zeiger->current(). "<br />"; }
-
In JS gibt es keine assoziativen Arrays.
-
drafed-map schrieb:
Jedes Objekt ist in JavaScript ein assoziatives Array:
In JS gibt es keine assoziativen Arrays.
Array ist nicht viel mehr als Object...<script type="text/javascript"><!-- var assoziativ = new Object(); assoziativ['key'] = 'value'; assoziativ['name'] = 'number'; assoziativ['assoziativ'] = 'javascript'; for(var value in assoziativ) { document.write(value + ' = ' + assoziativ[value] + '<br />'); } // das funktioniert auch (nur so nebenbe eine Bemerkung): document.write('assoziativ.key = ' + assoziativ.key + '<br />'); // --></script>
Beitrag zuletzt geändert: 5.1.2012 18:04:04 von hackyourlife -
<?php $array = array(); $array[] = array("test",1,100.9,true,array("foo","bar")); $array["x"] = "y"; $json = json_encode($array); echo "var deinjsarray = $json;"; ?>
Ausgabe wäre:
var deinjsarray = {"0":["test",1,100.9,true,["foo","bar"]],"x":"y"};
-
Kann mich konakona nur anschließen: mach das mit JSON.
Es ist kleiner, schnell aus einem PHP array erzeugt und einfach in JS anzusprechen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage