27

JAN09

[PHP] – phpTojsArray

Trackback URIVon Peppie in PHP, Programmierung

Ich sollte eben für meinen Kollegen eine Funktion schreiben die ihm ein PHP-Array in ein Javascript-Array zurückliefert. Gesagt, getan ^^ Es gibt immer mal wieder momente wo solch eine Funktion sehr nützlich ist, z.B. zum erstellen von Kategorielisten die nach der Auswahl der ersten Box sich eine zweite füllen soll.

Hier zunächst einmal die Funktion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
function phpTojsArray( $a_arrayData, $s_jsArrayName = 'phpTojsArray', $b_scriptTags = 1 )
{
  // begin inner_phpTojsArray()
  function inner_phpTojsArray( $a_rArrayData, $s_jsArrayName )
  {
    foreach( $a_rArrayData as $n_ixKey => $a_ixValue )
    {
      // is key = integer
      if( !preg_match( "/[0-9]/", $n_ixKey ) ) $n_ixKey = '"'. $n_ixKey .'"';
      if( is_object($a_ixValue) ) $a_ixValue = '[php::Object]';
 
      if( is_array($a_ixValue) )
      {
        echo $s_jsArrayName.'['.$n_ixKey.'] = new Array;';
        inner_phpTojsArray( $a_ixValue, $s_jsArrayName.'['.$n_ixKey.']' );
      }
      else echo $s_jsArrayName.'['.$n_ixKey.'] = "'.$a_ixValue.'";';
    }
  }
  // ende inner_phpTojsArray()
 
  echo ( $b_scriptTags ) ? '<script language="JavaScript" type="text/javascript">':'';
  echo 'var '.$s_jsArrayName.' = new Array;';
  inner_phpTojsArray( $a_arrayData, $s_jsArrayName );
  echo ( $b_scriptTags ) ? '</script>':'';
 
  // Gibt den Namen des Arrays zurück
  return $s_jsArrayName;
}
?>

Parameterliste

  1. $a_arrayData : Array
    Ist eine Referenz auf ein gefülltes php-Array aus dem das js-Array erzeugt wird
  2. $s_jsArrayName : String [optional]
    Hier kann man den Namen der Javascript Variable angeben
  3. $b_scriptTags : Boolean [optional]
    Hiermit schlatet man die Ausgabe von “<script language=”JavaScript …” an und aus.

Beispiel

Der ganze Aufruf könnte dann so aussehen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$Array[0][] = '1';
$Array[0][] = '1';
$Array[0][] = '1';
$Array[0][] = new stdClass;
$Array[0][]['dennis'] = '1';
 
$Array[1][] = '2';
$Array[1][] = '2';
$Array[1][] = '2';
 
$Array['test']['test'] = 'Dennis Schmitt';
 
phpTojsArray( $Array );
?>
Peppie
Über den Autor:
Vor mehr als 7 Jahren habe ich mein Hobby zum Beruf gemacht. Seit her bekommt mich kein Problem so schnell in die Knie, ich bin sehr verbissen und arbeite solange an einem Problem bis es gelöst ist.

Ähnliche Artikel:

2 Kommentare

michael

Nett, aber völlig unnötig (sorry). PHP5 hat mittlerweile ein eingebautes JSON-Modul, was PHP-Arrays auch in JS-Arrays (= JSON-Arrays) umwandelt.
Ausserdem: Ein Array wird in JavaScript entweder per

var arr = new Array();

oder besser noch

var arr = [];

erzeugt. Und in JavaScript gibt es keine assoziativen Arrays, dort sind das Hashes, die aber genauso per JSON-Modul erzeigt werden können.

Viele Grüsse!


Peppie

Hi michael,

mein Array wird doch via new Array erzeugt.
Gegen das JSONModul hab ich nichts zu entgegnen, da geb ich dir vollkommen recht.


Kommentar schreiben

;) :( :) :D :P :o :| ^^ :> :< :cry: :S xD


Blogverzeichnis - Blog Verzeichnis bloggerei.de frisch gebloggt Blog Top Liste - by TopBlogs.de Bloggeramt.de Add to Technorati Favorites Dennis bei Xing Wikio - Top Blog UrlFan.com