Snelle array print functie

Door Sven , 13 jaar geleden, 4.991x bekeken

Was me altijd een doorn in het oog: even snel de inhoud van een array printen. print_r gaat nog wel, maar wil je dat leesbaar doen, moet je ook de hele tijd die <pre> tags er om heen typen. Was het na een tijdje toch écht zat, en toen even snel deze simpele functie in elkaar geflanst. Is niet complex, niet moeilijk, niet ingewikkeld, zeg gerust supersimpel, maar ik denk dat een hoop mensen er wat aan hebben ;)

Gesponsorde koppelingen

PHP script bestanden

  1. snelle-array-print-functie

 

Er zijn 11 reacties op 'Snelle array print functie'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
Dit is mijn favoriet, gebaseerd op var_dump maar met wat extra opmaak. ;)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
32
33
34
<?php
/**
 * Dump variabelen
 *
 * @param mixed $param,... Geef er zoveel op als je wil
 * @return void
 */

function dump() {
        $args = func_get_args();
        ob_start();
        foreach($args as $arg) {
                echo var_dump($arg);
        }

        $output = htmlspecialchars(ob_get_clean());
        $output = preg_replace(
                array(
                        '{=&gt;\s*}',
                        '{(bool|int|float|string|array)\(([-\w.]+)\)}',
                        '{object\((\w+)\)#(\d+)}',
                        '{(?|(?<=\[)&quot;(.*?)&quot;(?=])|&quot;(.*?)&quot;(?=\r|\n))}s',
                        '{NULL(?=\r|\n)}'
                ),
                array(
                        ' =&gt; ',
                        '<b>$1</b>($2)',
                        '<b>object</b>($1)<i>#$2</i>',
                        "<i>'$1'</i>",
                        '<i><b style="color: #667">$0</b></i>'
                ),
                $output
        );
        echo '<pre style="margin:2px 0;padding:2px;background-color:#fcfcfc;color:#000;border:2px dotted #333;">' . $output . '</pre>';
}

?>
- -
- -
13 jaar geleden
 
0 +1 -0 -1
Quote:
(Helaas zul je zelf even het bovenstaande scriptje moeten testen om een duidelijker beeld van de functie te krijgen ;) )

Nou, laat ik het zo zeggen: degene die niet inziet wat deze code doet, is nog niet aan het gebruikt van print_r toe ;-)

[reclame]
Zie trouwens ook mijn scriptje met hetzelfde doel.
[/reclame]
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
Maar Jonathan, zoals ik daar ook al zei, gooi in jouw script eens $GLOBALS, en zie PHP doodgaan... ;)
Kay Kay
Kay Kay
13 jaar geleden
 
0 +1 -0 -1
Soooow heeej wat een functie
Als je nu wat nuttigs had gemaakt, zoals die uit de 1e post... En als je het niet mooi vind, kijk je gewoon in de bron van de pagina met de array, daar staat het namelijk wel goed.
Lode
Lode
13 jaar geleden
 
0 +1 -0 -1
Dat lijkt er meer op ja Richard ;)

En wat betreft dit script (uche... uche...)

dat kan in 1 regel natuurlijk gewoon, gezien print_r() een 2e parameter heeft, om te returnen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>'.print_r(array(), true).'</pre>'.PHP_EOL;
?>


Om daar nou een functie voor te gaan bakken...
Arian Stolwijk
Arian Stolwijk
13 jaar geleden
 
0 +1 -0 -1
Ik heb er zelfs een hele class (naja... meer een verzameling van static functions) voor gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
class Awf_Debug {

    static public function var_dump(){
        echo '<pre>';
        $args = func_get_args();
        foreach($args as $arg){
            var_dump($arg);
        }

        echo '</pre>';
    }


    static public function arr($arr){
        echo '<pre>'.print_r($arr,true).'</pre>';
    }


    static public function string($str){
        echo '<pre>'.$str.'</pre>';
    }


    static public function export($var){
        echo '<pre>'.var_export($var,true).'</pre>';
    }
}

?>


Super handig tijdens het debuggen... Ik heb ook wel een debug class voor FirePHP maar aangezien ik niet altijd firefox gebruik, is dit super handig ;)
PHP Newbie
PHP Newbie
13 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
rename_function('print_r', 'orPrint_r' );

function
print_r($array)
{

    if(!is_array($array))
    {

        triggererror();
        return false;
    }

    else
    {
        return '<pre>'.orPrint_r(array(), true).'</pre>'.PHP_EOL;
    }
}

?>


Niet getest, maar zoiets is wel handig soms.
Dutch Caffeine
Dutch Caffeine
13 jaar geleden
 
0 +1 -0 -1
Ik doe dit soort debug printjes altijd met firePHP (extensie voor fireBUG (extensie voor firefox)).

Met firephp hoef je al die functies niet in je script te plaatsen. Nog beter is als je hem online zet dan heeft de gebruiker er totaal GEEN last van!

Uitleg hoe je firePHP installeerd:

1; Je hebt firefox nodig (http://getfirefox.com/).
2; Eerst installeer je firebug (http://getfirebug.com/).
3; Dan installeer je firephp (http://www.firephp.org/).
4; Nu enkel nog even de 2 php bestanden voor firephp downloaden (http://www.firephp.org/HQ/Install.htm).

Het gebruik van firephp staat allemaal op de website van firephp.
PHP erik
PHP erik
13 jaar geleden
 
0 +1 -0 -1
Ik wou net zeggen, FirePHP. Kijk ook eens naar Zend_Debug.
Sjonnie
sjonnie
13 jaar geleden
 
0 +1 -0 -1
Ik vind print_r eigelijk helemaal niet onoverzichtelijk....
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>' . print_r($array,1) . '</pre>';
?>


zo doe ik het altijd.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. snelle-array-print-functie

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.