[PHP] Array uitprinten op formaat

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 01:59

aex351

I am the one

Topicstarter
Ik wil een array uitprinten op formaat. Wat ik hiermee wil bereiken is dat een gebruiker de array als het ware direct kan overkopieren uit de browser en in bijvoorbeeld zijn eigen php script zou kunnen plakken zonder er ook maar iets aan te hoeven veranderen.

Voor de duidelijkheid: ik ben dus niet opzoek naar een functie als print_r

input array ($var)
PHP:
1
2
3
4
$var['a']='cool';
$var['b']['b']='cool';
$var['c']['d']['e']='cool';
$var['c']['f']='cool'; // hier gaat het fout


class:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public function a(array $var=null, $recursief=false, $z=null)
    {   
        
        foreach($var as $key=>$inhoud) {
            if($recursief===false) {
                echo '$var';
            }
            
            echo '['.$key."]";
            if(is_array($inhoud)){
                $this->a($inhoud, true, $z);
            } else {
                echo '='.$inhoud ."\n";
            }
        }
        return $var ;
    }


Resultaat:
code:
1
2
3
4
$config[a]=cool 
$config[b][b]=cool 
$config[c][d][e]=cool 
[f]=cool


Ik kan vooralsnog geen oplossing bedenken voor het probleem zoals te zien in de onderste regel van de resultaat evenals input.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • TimDJ
  • Registratie: Februari 2002
  • Laatst online: 21-09 09:54
serialize en unserialize?

Freelance Drupal Developer


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 01:59

aex351

I am the one

Topicstarter
Nee dat is weer iets compleet anders. Ik wil een weergave van die array in php zoals een developer het ook zou zien.

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • TimDJ
  • Registratie: Februari 2002
  • Laatst online: 21-09 09:54
echo '=\''.$inhoud ."\'\n"; dan? en dan overal van die \' plaatsen zodat die gewoon ge-echod worden

[ Voor 50% gewijzigd door TimDJ op 28-03-2007 19:34 ]

Freelance Drupal Developer


Acties:
  • 0 Henk 'm!

Verwijderd

1: Een stack bijhouden van de keys van array elementen, en die meegeven als argument aan de recursieve functie.
2: var_export gebruiken.

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Wat er fout gaat is dat $var['c'] een array is met twee elementen itt $var['a'] en $var['b'] terwijl je ervanuit gaat dat behalve in je array geen array met meer dan 1 item voorkomt (uitgezonderd de root).

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan ook gewoon bijhouden wat je al hebt gezien:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function a($var, $recursief, $z) {
  foreach($var as $key=>$inhoud) {
    if($recursief===false) {
      $z = $var;
    }

    $y = $z."['".$key."']";
    if(is_array($inhoud)) {
      a($inhoud, true, $y);
    }
    else {
      echo $y."='".$inhoud ."';\n";
    }
  }
}


[edit2]
Bugje gefixed

[ Voor 17% gewijzigd door Daos op 28-03-2007 22:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Daos schreef op woensdag 28 maart 2007 @ 22:18:
Je kan ook gewoon bijhouden wat je al hebt gezien:
Ja, een stack dus. Last in, first out. Je kunt het beter zeggen dan met een slecht voorbeeld komen.

Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
http://se.php.net/manual/en/ref.array.php#73976
Als je hem een tikje aanpast is hij erg goed bruikbaar. Tot nu toe word er een mooie array geprint. Volgens mij is er maar één dingetje dat niet goed werkt. Bij het laatste deel van de array wordt er ook nog een komma gezet.

Acties:
  • 0 Henk 'm!

  • bartbh
  • Registratie: Maart 2004
  • Niet online
Joolee schreef op woensdag 28 maart 2007 @ 22:48:
Bij het laatste deel van de array wordt er ook nog een komma gezet.
Afaik is het niet fout om bij het laatste element van een array ook een komma te hebben.

Acties:
  • 0 Henk 'm!

  • Eegee
  • Registratie: Januari 2000
  • Laatst online: 21:42
Jongens, waarom nou zelf wat outpoepen, IMHO geeft Cheatah de echte oplossing:

var_export()

Je moet er alleen nog wel iets van "\$array = " voorplakken, maar simpeler kan het niet.
Pagina: 1