[php] Shortcut for echo "<pre>";print_r($myarray);echo "</pre>";

Is there a Shortcut for

echo "<pre>";
   print_r($myarray);
echo "</pre>";

It is really annoying typing those just to get a readable format of an array.

This question is related to php

The answer is


Just write

print_r($myarray); //it will display you content of an array $myarray

exit(); //it will not execute further codes after displaying your array


I would go for closing the php tag and then output the <pre></pre> as html, so PHP doesn't have to process it before echoing it:

?>

<pre><?=print_r($arr,1)?></pre>

<?php

That should also be faster (not notable for this short piece) in general. Using can be used as shortcode for PHP code.


You can set the second parameter of print_r to true to get the output returned rather than directly printed:

$output = print_r($myarray, true);

You can use this to fit everything into one echo (don’t forget htmlspecialchars if you want to print it into HTML):

echo "<pre>", htmlspecialchars(print_r($myarray, true)), "</pre>";

If you then put this into a custom function, it is just as easy as using print_r:

function printr($a) {
    echo "<pre>", htmlspecialchars(print_r($a, true)), "</pre>";
}

You can create Shortcut key in Sublime Text Editor using Preferences -> Key Bindings

Now add below code on right-side of Key Bindings within square bracket []

{ 
    "keys": ["ctrl+shift+c"],
    "command": "insert_snippet",
    "args": { "contents": "echo \"<pre>\";\nprint_r(${0:\\$variable_to_debug});\necho \"</pre>\";\ndie();\n" }
}

Enjoy your ctrl+shift+c shortcut as a Pretty Print of PHP.


echo '<pre>' . print_r( $myarray, true ) . '</pre>';

From the PHP.net print_r() docs:

When [the second] parameter is set to TRUE, print_r() will return the information rather than print it.


I generally like to create my own function as has been stated above. However I like to add a few things to it so that if I accidentally leave in debugging code I can quickly find it in the code base. Maybe this will help someone else out.

function _pr($d) {
    echo "<div style='border: 1px solid#ccc; padding: 10px;'>";
    echo '<strong>' . debug_backtrace()[0]['file'] . ' ' . debug_backtrace()[0]['line'] . '</strong>';
    echo "</div>";
    echo '<pre>';
    if(is_array($d)) {
    print_r($d);
    } else if(is_object($d)) {
    var_dump($d);
    }
    echo '</pre>';
}

<?php
$people = array(
    "maurice"=> array("name"=>"Andrew",
                      "age"=>40,
                      "gender"=>"male"),
    "muteti" => array("name"=>"Francisca",
                      "age"=>30,
                      "gender"=>"Female")
               );
'<pre>'.
print_r($people).
'</pre>';

/*foreach ($people as $key => $value) {
    echo "<h2><strong>$key</strong></h2><br>";
    foreach ($value as $values) {
    echo $values."<br>";;
    }
}*/
//echo $people['maurice']['name'];

?>

Both old and accepted, however, I'll just leave this here:

function dump(){
    echo (php_sapi_name() !== 'cli') ? '<pre>' : '';
    foreach(func_get_args() as $arg){
        echo preg_replace('#\n{2,}#', "\n", print_r($arg, true));
    }
    echo (php_sapi_name() !== 'cli') ? '</pre>' : '';
}

Takes an arbitrary number of arguments, and wraps each in <pre> for CGI requests. In CLI requests it skips the <pre> tag generation for clean output.

dump(array('foo'), array('bar', 'zip'));
/*
CGI request                          CLI request

<pre>                                Array
Array                                (
(                                        [0] => foo
    [0] => foo                       )
)                                    Array
</pre>                               (
<pre>                                    [0] => bar
Array                                    [1] => zip
(                                    )
    [0] => bar
    [0] => zip
)
</pre>

If you are using XDebug simply use

var_dump($variable);

This will dump the variable like print_r does - but nicely formatted and in a <pre>.

(If you don't use XDebug then var_dump will be as badly formated as print_r without <pre>.)


function printr($data)
{
   echo "<pre>";
      print_r($data);
   echo "</pre>";
}

And call your function on the page you need, don't forget to include the file where you put your function in for example: functions.php

include('functions.php');

printr($data);

teach your editor to do it-

after writing "pr_" tab i get exactly


print("<pre>");
print_r($);
print("</pre>");

with the cursor just after the $

i did it on textmate by adding this snippet:


print("<pre>");
print_r(\$${1:});
print("</pre>");


Nope, you'd just have to create your own function:

function printr($data) {
   echo "<pre>";
      print_r($data);
   echo "</pre>";
}

Apparantly, in 2018, people are still coming back to this question. The above would not be my current answer. I'd say: teach your editor to do it for you. I have a whole bunch of debug shortcuts, but my most used is vardd which expands to: var_dump(__FILE__ . ':' . __LINE__, $VAR$);die();

You can configure this in PHPStorm as a live template.


echo "<pre/>"; print_r($array);

If you use VS CODE, you can use : Ctrl + Shift + P -> Configure User Snippets -> PHP -> Enter

After that you can input code to file php.json :

"Show variable user want to see": {
  "prefix": "pre_",
  "body": [
     "echo '<pre>';",
     "print_r($variable);",
     "echo '</pre>';"
  ],
  "description": "Show variable user want to see"
}

After that you save file php.json, then you return to the first file with any extension .php and input pre_ -> Enter Done, I hope it helps.


Maybe you can build a function / static class Method that does exactly that. I use Kohana which has a nice function called:

Kohana::Debug

That will do what you want. That's reduces it to only one line. A simple function will look like

function debug($input) {
    echo "<pre>";
    print_r($input);
    echo "</pre>";
}

I just add function pr() to the global scope of my project. For example, you can define the following function to global.inc (if you have) which will be included into your index.php of your site. Or you can directly define this function at the top of index.php of root directory.

   function pr($obj)
   {
      echo "<pre>";
      print_r ($obj);
      echo "</pre>";
   }

Probably not helpful, but if the array is the only thing that you'll be displaying, you could always set

header('Content-type: text/plain');