[php] inhoud van een array in een string

Pagina: 1
Acties:

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Ik gebruik een bestand met een 2 dimensioneel array:
PHP:
1
<? $klant = Array(         Array ( "1",             "Bedrijf1",             "Nama1",             "Straat1",             "pc1",            "p1",             "telnr1"               ),         Array ( "2",             "Bedrijf2",             "naam2",             "str2",             "pc2",             "p2",             "telnr2"               )        ); ?> ?>

Dit heb ik handmatig in een file gezet, die lees ik ergens anders weer uit. Als ik die file echter opnieuw aan wil laten maken, dan kan dat door een string erin te zetten, deze string moet dus alle code zoals hierboven staat, erin zetten.

Het probleem ligt m in die 2dim array. Voor 1 dim gebruik je implode() of join(), maar met 2 dim werkt dat niet (mooi althans).

Iemand een oplossing hiervoor? Misschien toch een standaardfunctie? Ik heb (voorlopig) niks kunnen vinden in de search hier en op php.net...

Ook Knor is aangestoken met het ligfietsvirus!


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

foreach/while/for;
recursive;
serialize;

't zijn maar wat trefwoorden... :)

Klaar voor een nieuwe uitdaging.


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Dit is de oplossing:
PHP:
1
<?ob_start(); print_r($array); $string = ob_get_contents(); ob_end_clean(); ?>

Met nog wat extra rommel eromheen is het werkend!!

Ook Knor is aangestoken met het ligfietsvirus!


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zondag 14 april 2002 00:05 schreef Rotjeknor het volgende:
Dit is de oplossing:
PHP:
1
<?ob_start(); print_r($array); $string = ob_get_contents(); ob_end_clean(); ?>

Met nog wat extra rommel eromheen is het werkend!!
mnah, dan vind ik
serialize() en unserialize() of wddx() of recursief dumpen of een database of wat dan ook eigenlijk wel netter :)

Klaar voor een nieuwe uitdaging.


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Hmmm... ik was iets te snel met mijn conclusie, werkt toch niet dus.

Ik heb dit nu in "test.inc" staan:
<? $klant = Array
(
[0] => Array
(
[0] => 1
[1] => Bedrijf1
[2] => Naam1
[3] => Straat1
[4] => Postcode1
[5] => Plaats1
[6] => Telnr1
)

[1] => Array
(
[0] => 2
[1] => Bedrijf2
[2] => Naam2
[3] => Straat2
[4] => Postcode2
[5] => Plaats2
[6] => Telnr2
)

)
;
?>
Als ik vervolgens include 'test.inc' doe, krijg ik: Parse error: parse error, expecting `')'' in c:\data\www\po_cti_app\test.inc on line 3

Ik heb zitten nakijken hoe een array opgebouwd moet zijn, zou goed moeten zijn volgens mij... wat is hier fout aan?

btw chem, of het netter is of niet, ik heb naar die functies zitten kijken, maar daar kom ik 123 zo snel ook niet uit... het gaat mij er alleen maar om dat het werkt, of iets netter is komt later wel (-:

Ook Knor is aangestoken met het ligfietsvirus!


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Serialize de array en gebruik daarna unserialize in je inc-file...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

uhm, je kan niet zeggen [0] => value maar 0 => value.

basis array kennis wel :)
verder ontbreken er zo ook komma's, quotes etc. etc.

Klaar voor een nieuwe uitdaging.


  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
basis array kennis wel :)
Klopt, wordt nog aan gesleuteld... (-:

anywayz, na enig zoekwerk en probeerwerk dit resultaat (voor het geval er mensen zijn die net als ik ook niet 123 het gebruik van serialize snappen):

test2.php:
PHP:
1
<?$klant[0][0] = "1";$klant[0][1] = "Bedrijf1";$klant[0][2] = "Blaat";$klant[0][3] = "Straat1";$klant[0][4] = "Postcode1";$klant[0][5] = "Plaats1";$klant[0][6] = "Telnr1";$klant[1][0] = "2";$klant[1][1] = "Bedrijf2";$klant[1][2] = "Naam2";$klant[1][3] = "Straat2";$klant[1][4] = "Postcode2";$klant[1][5] = "Plaats2";$klant[1][6] = "Telnr2";print_r ($klant);$klant = serialize($klant);$filename = "test2.inc";$fp = fopen($filename, "wb");fputs($fp, $klant);fclose($fp);print("<a href=\"test2a.php\">[page 2]</a>");?>

Dan wordt dit gemaakt in test2.inc:
code:
1
a:2:{i:0;a:7:{i:0;s:1:"1";i:1;s:8:"Bedrijf1";i:2;s:5:"Blaat";i:3;s:7:"Straat1";i:4;s:9:"Postcode1";i:5;s:7:"Plaats1";i:6;s:6:"Telnr1";}i:1;a:7:{i:0;s:1:"2";i:1;s:8:"Bedrijf2";i:2;s:5:"Naam2";i:3;s:7:"Straat2";i:4;s:9:"Postcode2";i:5;s:7:"Plaats2";i:6;s:6:"Telnr2";}}

En in test2a.php dit:
PHP:
1
<?$s = implode("", @file("test2.inc"));$a = unserialize($s);print $a[0][2];?>

Krijg je als resultaat: Blaat! (-:

Ook Knor is aangestoken met het ligfietsvirus!


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

geweldig he :)
met WDDX (xml uitpoeper) kan je de data zelfs met andere talen uitwisselen (perl, asp, c, whatever)

Klaar voor een nieuwe uitdaging.

Pagina: 1