- Есть ли симпатичная печать для PHP?
- Как вывести PHP массив
- Функция print_r()
- Результат:
- Функция var_dump()
- Результат:
- var_export()
- Результат:
- Цикл foreach
- Результат:
- Результат:
- Результат:
- Цикл for
- Результат:
- Цикл while
- Результат:
- Функция implode()
- Результат:
- print_r
- Список параметров
- Возвращаемые значения
- Примечания
- Примеры
- Смотрите также
Есть ли симпатичная печать для PHP?
На самом деле это намного лучше, чем var_dump потому что var_dump обрезает результат, если это большой массив или большая строка .
упрощенной версией будет: echo «
". print_r ($ массив, 1). "Пред>";
Не забудьте экранировать вывод print_r : $formatted = print_r($array, true); print «
" . htmlspecialchars($formatted, ENT_QUOTES, 'UTF-8', true) . "
«;
Лучшее, что я нашел, это следующее:
И если вы хотите более подробно:
Добавление тега HTML в среду веб-разработки будет уважать новые строки \n функции печати правильно, без необходимости добавлять некоторые html
Для простоты print_r() и var_dump() нельзя бить. Если вы хотите что-то немного интересное или имеете дело с большими списками и/или глубоко вложенными данными, Krumo сделает вашу жизнь намного проще — это предоставляет вам хорошо отформатированный дисплей с разворачиванием/расширением.
Для PHP вы можете легко использовать HTML и некоторый простой рекурсивный код, чтобы сделать красивое представление вложенных массивов и объектов.
Это будет печатать массив как список вложенных списков HTML. HTML и ваш браузер позаботятся о отступов и сделать его разборчивым.
Лучший способ сделать это —
$array=array("foo"=>"999","bar"=>"888","poo"=>array("x"=>"111","y"=>"222","z"=>"333")); echo "
".print_r($array,true)."";
Массив
(
[foo] = > 999
[bar] = > 888
[poo] = > Array
(
[x] = > 111
[y] = > 222
[n] = > 333
)
)О втором параметре print_r «true» из документации:
Если для этого параметра установлено значение TRUE, print_r() вернет а не распечатать его.
Не забудьте установить html_errors = on в php.ini, чтобы получить красивую печать var_dump() в сочетании с xdebug.
Это небольшая функция, которую я использую все время, когда она удобна, если вы отлаживаете массивы. Параметр title дает вам некоторую информацию об отладке, как какой массив вы печатаете. он также проверяет, снабжен ли он допустимым массивом и позволяет узнать, не сделали ли вы.
function print_array($title,$array)< if(is_array($array))< echo $title."
". "||---------------------------------||
". ""; print_r($array); echo "". "END ".$title."
". "||---------------------------------||
"; >else < echo $title." is not an array."; >>//your array $array = array('cat','dog','bird','mouse','fish','gerbil'); //usage print_array("PETS", $array);
PETS ||---------------------------------|| Array ( [0] => cat [1] => dog [2] => bird [3] => mouse [4] => fish [5] => gerbil ) END PETS ||---------------------------------||
почему понизить? хорошо работает не так ли? Я не собираюсь плакать об этом, просто любопытно, если я делаю что-то не так. Я самоучка, поэтому, пожалуйста, просветите меня.
Я не видел, чтобы кто-то упомянул о выполнении «запятой» с вашей командой print_r, а затем вы МОЖЕТЕ использовать его встроенный с html, не пройдя через все обручи или многозадачные поисковые решения.
print "session:
".print_r($_SESSION, true)."";
Кроме того, вы должны также выполнить htmlspecialchars() вокруг print_r() , чтобы защитить от возможных хранимых угроз XSS.
Если вы делаете больше отладки, важно Xdebug. По умолчанию он переопределяет var_dump() своей собственной версией которая отображает гораздо больше информации, чем PHP по умолчанию var_dump() .
Blarg. Дамп var в Xdebug отстой, потому что он выводит HTML . О да, выглядит фантастически в тесте CLI.
error_log(print_r($variable,true));
для отправки в syslog или eventlog для Windows
echo svar_dump (array ( «a», «b» = > «2», «c» = > array ( «d», «e» = > array ( «f», «g» ))));
'; else $brs=''; $return = '>-->
EOH; if (is_int($vInput)) < $return .= gettype($vInput)." (".intval($vInput).") "; > else if (is_float($vInput)) < $return .= gettype($vInput)." (".doubleval($vInput).") "; > else if (is_string($vInput)) < $return .= "".gettype($vInput)."(" . strlen($vInput) . ") \"" . _my_html_special_chars($vInput). "\""; #nl2br((_nbsp_replace, > else if (is_bool($vInput)) < $return .= gettype($vInput)."(" . ($vInput ? "true" : "false") . ")
"; > else if (is_array($vInput) or is_object($vInput)) < reset($vInput); $return .= gettype($vInput); if (is_object($vInput)) < $return .= " \"".get_class($vInput)."\" Object of ".get_parent_class($vInput); if (get_parent_class($vInput)=="") $return.="stdClass"; $return.=""; $vInput->class_methods="\n".implode(get_class_methods($vInput),"();\n"); > $return .= " count = [" . count($vInput) . "] dimension = [ ]
"; $return .= EOH; while (list($vKey, $vVal) = each($vInput))< $return .= " "; $return .= (is_int($vKey)) ? "" : "\""; $return .= _nbsp_replace(_my_html_special_chars($vKey)); $return .= (is_int($vKey)) ? "" : "\""; $return .= " => "; if ($iLevel>$maxlevel and is_array($vVal)) $return .= svar_dump("array(".sizeof($vVal)."), but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel); else if ($iLevel>$maxlevel and is_object($vVal)) $return .= svar_dump("Object, but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel); else $return .= svar_dump($vVal, ($iLevel + 1), $maxlevel) . " "; > $return .= "
"; > else < if (gettype($vInput)=="NULL") $return .="null"; else $return .=gettype($vInput); if (($vInput)!="") $return .= " (".($vInput).")
"; > $return .= "
"; return $return; > function _nbsp_replace($t) < return str_replace(" "," ",$t); >function _my_html_special_chars($t,$double_encode=true)< if(version_compare(PHP_VERSION,'5.3.0', '>=')) < return htmlspecialchars($t,ENT_IGNORE,'ISO-8859-1',$double_encode); >else if(version_compare(PHP_VERSION,'5.2.3', '>=')) < return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1',$double_encode); >else < return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1'); >>
Как вывести PHP массив
Примеры использования PHP функций и циклов для вывода всех элементов массива в окно браузера.
Функция print_r()
Функция print_r() выводит информацию о переменной в удобочитаемом виде. Чтобы отобразить пробелы и переносы результат функции нужно обернуть в тег .
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); echo '
'; print_r($array); echo '';
Результат:
Array ( [0] => Andi [1] => Benny [2] => Cara [3] => Danny [4] => Emily )
Функция var_dump()
Функция var_dump() отображает информацию о переменной, включая тип и значение.
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); echo '
'; var_dump($array); echo '';
Результат:
array(5) < [0]=>string(4) "Andi" [1]=> string(5) "Benny" [2]=> string(4) "Cara" [3]=> string(5) "Danny" [4]=> string(5) "Emily" >
var_export()
Функция var_export() возвращает строковое представление переменной в виде полноценного PHP-кода.
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); echo '
'; echo var_export($array); echo '';
Результат:
array ( 0 => 'Andi', 1 => 'Benny', 2 => 'Cara', 3 => 'Danny', 4 => 'Emily', )
Цикл foreach
Цикл foreach специально создан для поэлементного перебора массивов.
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); foreach ($array as $row) < echo $row . "
\r\n"; >Результат:
Andi
Benny
Cara
Danny
EmilyПример с выводом нумерованного списка с использованием индексов массива:
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); foreach ($array as $n => $row) < echo ($n + 1) . '.' . $row . "
\r\n"; >Результат:
1.Andi
2.Benny
3.Cara
4.Danny
5.EmilyЧтобы не выводить последний
, добавим условие:$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); foreach ($array as $n => $row) < echo ($n + 1) . '.' . $row; if ($n < count($array) - 1) < echo "
\r\n"; > >Результат:
1.Andi
2.Benny
3.Cara
4.Danny
5.EmilyЦикл for
Цикл for подойдет только в случаях, когда индексы массива имеют непрерывную нумерацию.
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); for ($n = 0; $n < count($array); $n++) < echo $n + 1 . '.' . $array[$n] . "
\r\n"; >Результат:
1.Andi
2.Benny
3.Cara
4.Danny
5.EmilyЦикл while
Цикл while такое же работает как и for .
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); $index = 0; while ($index < count($array)) < echo $index + 1 . '.' . $array[$index] . "
\r\n"; $index++; >Результат:
1.Andi
2.Benny
3.Cara
4.Danny
5.EmilyФункция implode()
Также, для вывода массива удобно использовать функцию implode() , которая объединяет элементы массива через разделитель.
$array = array( 'Andi', 'Benny', 'Cara', 'Danny', 'Emily', ); echo implode("
\r\n", $array);Результат:
Andi
Benny
Cara
Danny
Emilyprint_r
print_r() выводит информацию о переменной в удобочитаемом виде.
print_r() , var_dump() и var_export() могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов в PHP 5. Статические элементы класса не будут отображены.
Список параметров
Выражение для вывода на экран.
Если вы хотите перехватить вывод print_r() , используйте параметр return . Если его значение равно TRUE , то print_r() вернет результат вывода вместо вывода в браузер (который производится по умолчанию).
Возвращаемые значения
Если в функцию передаются значения типов string , integer или float , будет напечатано само значение. Если передается массив array , значения будут напечатаны в формате, показывающем ключи и элементы массива. Аналогичный формат вывода используется для объектов.
Если параметр return установлен в TRUE , данная функция вернет строку ( string ). В противном случае возвращаемое значение будет равно TRUE .
Примечания
Замечание:
При использовании параметра return данная функция использует внутреннюю буферизацию вывода, поэтому она не может быть использована внутри callback-функции ob_start() .
Примеры
Пример #1 Пример использования print_r()
$a = array ( 'a' => 'apple' , 'b' => 'banana' , 'c' => array ( 'x' , 'y' , 'z' ));
print_r ( $a );
?>Результат выполнения данного примера:
Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ) )Пример #2 Пример использования параметра return
$b = array ( ‘m’ => ‘monkey’ , ‘foo’ => ‘bar’ , ‘x’ => array ( ‘x’ , ‘y’ , ‘z’ ));
$results = print_r ( $b , true ); // $results теперь содержит вывод print_r
?>?phpСмотрите также
- ob_start() — Включение буферизации вывода
- var_dump() — Выводит информацию о переменной
- var_export() — Выводит в браузер или возвращает интерпретируемое строковое представление переменной