Есть ли ярлык для
echo "<pre>";
print_r($myarray);
echo "</pre>";
Это очень неприятно печатать их только для получения читаемого формата массива.
Есть ли ярлык для
echo "<pre>";
print_r($myarray);
echo "</pre>";
Это очень неприятно печатать их только для получения читаемого формата массива.
Это самое короткое:
echo '<pre>',print_r($arr,1),'</pre>';
Закрывающий тег также можно опустить.
Нет, вам просто нужно создать собственную функцию:
function printr($data) {
echo "<pre>";
print_r($data);
echo "</pre>";
}
Очевидно, в 2018 году люди все еще возвращаются к этому вопросу. Выше не будет моим текущим ответом. Я бы сказал: научите своего редактора делать это за вас. У меня есть целая куча отладочных ярлыков, но мой самый используемый - vardd
, который расширяется до: var_dump(__FILE__ . ':' . __LINE__, $VAR$);die();
Вы можете настроить это в PHPStorm как живой шаблон.
Вы можете установить второй параметр print_r
на true
, чтобы получить возвращаемый результат, а не печатать напрямую:
$output = print_r($myarray, true);
Вы можете использовать это, чтобы поместить все в один echo
(не забывайте htmlspecialchars
, если вы хотите распечатать его в HTML):
echo "<pre>", htmlspecialchars(print_r($myarray, true)), "</pre>";
Если вы поместите это в пользовательскую функцию, это будет так же просто, как использовать print_r
:
function printr($a) {
echo "<pre>", htmlspecialchars(print_r($a, true)), "</pre>";
}
echo '<pre>' . print_r( $myarray, true ) . '</pre>';
Из PHP.net print_r() docs:
Если для параметра [second] установлено значение TRUE, print_r() вернет информацию, а не распечатает ее.
Вероятно, не полезно, но если массив - это единственное, что вы будете показывать, вы всегда можете установить
header('Content-type: text/plain');
научите своего редактора делать это -
после записи вкладки "pr_" я получаю ровно
print("<pre>");
print_r($);
print("</pre>");
с курсором сразу после $
Я сделал это на textmate, добавив этот фрагмент:
print("<pre>");
print_r(\$${1:});
print("</pre>");
Если вы используете XDebug, просто используйте
var_dump($variable);
Это приведет к выгрузке переменной, как print_r
, но красиво отформатирован и в <pre>
.
(Если вы не используете XDebug, тогда var_dump
будет так плохо сформирован как print_r
без <pre>
.)
echo "<pre/>"; print_r($array);
Как старый, так и принятый, я просто оставлю это здесь:
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>' : '';
}
Принимает произвольное количество аргументов и обертывает каждый в <pre>
для запросов CGI. В запросах CLI он пропускает создание тега <pre>
для чистого вывода.
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>
Я просто добавляю функцию pr() в глобальную область моего проекта. Например, вы можете определить следующую функцию для global.inc(если есть), которая будет включена в ваш index.php вашего сайта. Или вы можете напрямую определить эту функцию в верхней части index.php корневого каталога.
function pr($obj)
{
echo "<pre>";
print_r ($obj);
echo "</pre>";
}
Просто напишите
print_r($myarray);
//будет отображаться содержимое массива $myarray
exit();
//он не будет выполнять дальнейшие коды после отображения вашего массива
Возможно, вы можете создать метод/статический класс Method, который делает именно это. Я использую Kohana, у которого есть хорошая функция:
Kohana::Debug
Это сделает то, что вы хотите. Это уменьшает его до одной строки. Простая функция будет выглядеть как
function debug($input) {
echo "<pre>";
print_r($input);
echo "</pre>";
}
function printr($data)
{
echo "<pre>";
print_r($data);
echo "</pre>";
}
И вызовите свою функцию на нужную страницу, не забудьте включить файл, в который вы положили свою функцию, например: functions.php
include('functions.php');
printr($data);
Я бы пошел на закрытие тега php, а затем вывел <pre></pre>
как html, поэтому PHP не должен обрабатывать его, прежде чем повторять его:
?>
<pre><?=print_r($arr,1)?></pre>
<?php
Это также должно быть быстрее (не важно для этой короткой части) в целом. Использование может использоваться в качестве короткого кода для кода PHP.
<?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'];
?>
Я обычно люблю создавать свои собственные функции, как было сказано выше. Однако я хотел бы добавить к этому несколько вещей, чтобы, если я случайно ушел в отладочный код, я мог быстро найти его в базе кода. Может быть, это поможет кому-то еще.
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>';
}
Вы можете создать комбинацию клавиш в Редакторе возвышенного текста, используя Настройки → Привязки клавиш
Теперь добавьте приведенный ниже код справа от клавишных привязок в квадратную скобку []
{
"keys": ["ctrl+shift+c"],
"command": "insert_snippet",
"args": { "contents": "echo \"<pre>\";\nprint_r(${0:\\$variable_to_debug});\necho \"</pre>\";\ndie();\n" }
}
Насладитесь сочетанием клавиш ctrl + shift + c в виде симпатичной печати PHP