print_r — печатает читабельную информацию о переменной


print_r — Выводит удобочитаемую информацию о переменной

Описание

print_r() выводит информацию о переменной в удобочитаемом виде.

print_r() , var_dump() и var_export() могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов в PHP 5. Статические элементы класса не будут отображены.

Следует помнить, что print_r() установит внутренний указатель массива в его конец. Используйте функцию reset() для установки его в начало массива.

Список параметров

Выражение для вывода на экран.

Если Вы хотите перехватить вывод print_r() , используйте параметр return. Если его значение равно TRUE, то print_r() вернет результат вывода вместо вывода в браузер (который производится по умолчанию).

Возвращаемые значения

Если в функцию передаются значения типов string , integer или float , будет напечатано само значение. Если передается массив array , значениия будут напечатаны в формате, показывающем ключи и елементы массива. Аналогичный формат вывода используется для объектов.

Примечания

Эта функция использует внутреннюю буферизацию вывода с этим параметром, поэтому она не может быть использована внутри коллбэк-функции ob_start() .

Список изменений

Версия Описание
4.3.0 Добавлен параметр return. Если Вам необходимо перехватить вывод print_r() в ранних версиях PHP, используйте output-control функции.
4.0.4 В версиях PHP до 4.0.4, print_r() будет выполняться бесконечно, если передается массив или объект, который содержит прямую или косвенную ссылку на себя. Примером является print_r($GLOBALS), поскольку $GLOBALS является глобальной переменной, которая содержит ссылку на себя.

Примеры

Пример #1 Пример использования print_r()

mixed print_r ( mixed $expression [, bool $return = false ] ) print_r выводит в «человекопонятном» виде содержание сущности, переданной параметром $expression. Функцию удобно использовать для вывода в читабельном виде массивов или, например, объектов. Если есть необходимость сохранить вывод функции в переменную, то можно указать необязательный параметр $return, установив ему значение в true — в этом случае функция ничего не выведет, а результат будет возвращён. Примеры использования 1 =array( 1 => ‘a’ , 2 => ‘b’ , 3 => ‘c’ );
print_r ( $arr ); // Выведет: «Array ( [1] => a [2] => b [3] => c )»
?> 2 class TestClass
<
function __construct ()
<
$this -> a = ‘apple’ ;
$this -> b = ‘banana’ ;
>
>

$t =new TestClass ;

print_r ( $t ); // Выведет: «TestClass Object ( [a] => apple [ b] => banana )»
?> 3 =array( 1 => ‘a’ , 2 => ‘b’ , 3 => ‘c’ );
$output = print_r ( $arr , true ); // Не выводим на экран, а сохраняем в переменную
echo ‘test. test. ‘ . $output ; // Выведет: «test. test. Array ( [1] => a [2] => b [3] => c ) »
?>

Функции Print() в Python

Функция print Python выводит заданные объекты на стандартное устройство вывода (экран) или отправляет их текстовым потоком в файл.

Полный синтаксис функции print() :

Параметры print()

  • objects – объект, который нужно вывести * обозначает, что объектов может быть несколько;
  • sep – разделяет объекты. Значение по умолчанию: ‘ ‘ ;

  • end – ставится после всех объектов;
  • file – ожидается объект с методом write ( string ). Если значение не задано, для вывода объектов используется файл sys.stdout ;
  • flush – если задано значение True , поток принудительно сбрасывается в файл. Значение по умолчанию: False .

Примечание: sep, end, file и flush — это аргументы-ключевые слова. Если хотите воспользоваться аргументом sep , используйте:

Возвращаемое значение

Функция Python print не возвращает значений; возвращает None .

Пример 1 : Как работает функция print() в Python?

При запуске программы получаем:

В примере, приведенном выше функции print Python 3 , во всех трёх выражениях передаётся только параметр objects , поэтому:

  • Используется разделитель ‘ ‘ — обратите внимание на пробел между двумя объектами в результатах вывода;
  • В качестве параметра end используется ‘n’ ( символ новой строки ). Обратите внимание, что каждое выражение print выводится в новой строке;
  • file — используется файл sys.stdout . Результат выводится на экран;
  • Значение flush — False . Поток не сбрасывается принудительно.

Пример 2: print() с разделителем и параметром end

При запуске программы получаем:

Мы передали в программу, пример которой приведен выше, параметры sep и end .

Пример 3: print() с параметром file

С помощью Python print без перевода строки также можно вывести объекты в файл, указав параметр file :

Код, приведенный выше, пытается открыть файл python.txt в режиме записи. Если файл не существует, программа создаёт файл python.txt и открывает его в режиме записи.

В примере мы передали в параметр file объект sourceFile . Объект-строка ‘ Круто же, правда? ‘ записывается в файл python.txt ( после чего можно открыть его текстовым редактором ).

В конце исполнения программы файл закрывается методом close() .

Данная публикация представляет собой перевод статьи « Python print() » , подготовленной дружной командой проекта Интернет-технологии.ру

Компью А рт

Представляем вниманию читателей краткий обзор прикладных программ и решений, обеспечивающих производственный процесс печати переменных данных. Главная тема обзора — использование персонализации в маркетинге.

С точки зрения информационных технологий в печати переменных данных по сути можно выделить три ключевых элемента: дизайн, программное обеспечение и переменную информацию.

Дизайн печатного проекта с переменными данными сложнее, чем работа над статичным листом. Разработчик должен предусмотреть множество специфических факторов. Необходимо также учитывать, что хотя каждая копия может быть индивидуальна, однако все копии (при различиях в числе иллюстраций, длине и месторасположении обращений, при отсутствии или наличии другой специфической информации в зависимости от маркетинговых или демографических факторов) должны обладать общим стилем проектируемого рекламного обращения.

Успех индивидуализированного маркетинга зависит от возможности строить рекламное предложение на основе точной информации о каждом конкретном получателе. Проектирование индивидуализированной программы маркетинга включает построение профилей потенциальных покупателей и адресацию им соответственных предложений товаров или услуг. Проект должен содержать информацию относительно того, кто покупает различные изделия или услуги, почему покупает и когда покупает. Объединение этой информации в базе данных позволяет осуществлять подлинную персонализацию, а не просто надпечатку на стандартном конверте имени получателя.

В построении проекта печати с использованием переменных данных может помочь имеющаяся у заказчика система управления взаимоотношениями с клиентами (CRM). Но самым главным в материальном обеспечении процесса печати переменных данных являются программы.

Технология цифровой печати делает возможным индивидуализированный маркетинг. Посредством цифровой печати каждая часть маркетингового или рекламного обращения может быть напечатана с уникальным сообщением и изображением. Чтобы реализовать эти возможности, необходимо специализированное программное обеспечение, способное создать файлы печати, которые будут содержать уникальные сообщения и изображения для каждого индивидуума, основанные на демографической и иной информации о потенциальном заказчике из базы данных.


Качественное программное обеспечение для печати переменных данных должно позволять решить следующие задачи:

  • определение переменных текстовых и графических элементов в маркетинговом проекте;
  • назначение полей в базе данных, которые будут использоваться для управления каждым переменным элементом;
  • организация переменного содержания в текстовые и графические каталоги;
  • установка условного логического оператора, который определит, какое текстовое сообщение или графическое изображение будет напечатано для каждого различного значения, найденного в поле, которое управляет переменными элементами;
  • создание файла печати, который содержит статические и переменные текст и графику.

Помимо общих требований к программам такого рода, у каждого пакета для работы с переменными данными имеется собственная специализация. Одна программа хорошо подходит для каталогов, но будет далеко не лучшим выбором для продажи товаров по почте; другая — предоставляет необычайно широкие возможности выборки из баз данных, но проигрывает в производительности обработки изображений; ПО для больших и сложных работ не может обеспечить быстрой настройки работы, необходимой для более простых заданий и т.д. В любом случае при выборе программного обеспечения следует учитывать специфику задач, которые вам предстоит решать.

Компания Agfa внесла вклад в историю развития программного обеспечения для печати переменных данных во времена сотрудничества с Xeikon, выпустив одно из первых расширений для QuarkXPress, которое позволяло реализовать печать переменных данных — Personalizer-X (в настоящее время пакет компанией не поддерживается).

Banta Integrated Media, Publishing Solutions (ранее Meadows Information Systems, Inc.)

DesignMerge Professional Bundle, предлагаемая Banta Integrated Media, представляет собой набор дополнительных модулей для QuarkXPress, которые обеспечивают слияние сложных документов и печать переменных данных. Программы работают с любым документом QuarkXPress, позволяя потребителю создать предопределенные слоты индивидуализированных документов.

Кроме того, DesignMerge связан с дополнительным модулем CopyFit Xtension, который автоматически подстраивает текстовые боксы согласно объему информации, и с GroupPicture, позволяющим использовать в качестве переменных данных документы QuarkXPress. DesignMerge автоматически отделяет потоки фиксированных и переменных данных и позволяет выводить их на любой принтер, поддерживающий PostScript. Доступны также специальные драйверы для Xerox VIPP также как и для вывода PPML.

Atlas Software

Пакет PrintShop Mail является программой минимальной конфигурации, которая интегрирует информацию из базы данных в документы. PrintShop Mail ориентирован на персонализацию писем и других почтовых отправлений. Страницы могут быть созданы в текстовом процессоре типа Microsoft Word или в таких пакетах верстки, как QuarkXPress. Информация может поступать в различных форматах баз данных, включая DBF и Microsoft Access. Этот достаточно известный и популярный пакет предлагается также различными поставщиками решений для цифровой печати.

Приложение Darwin Desktop вместе с языком Variable Print Specification language от CreoScitex создает индивидуализированные документы, предоставляя необходимые возможности управления и проектирования. Входящий в комплект поставки растеризатор VPS RIP специализирован для обработки переменной информации и выполняет растрирование работы только один раз. В дальнейшем работу можно перепечатывать в любых количествах без дополнительных затрат времени с помощью утилиты Printer Disk или сохранить на переносном носителе для перепечатки в другой системе. Компоновка уже растрированной работы может быть выполнена посредством поставляемого в комплекте приложения Job Editor. Перечисленное обеспечение формирует законченную систему для создания и производства полноцветных индивидуализированных документов.

Shared Content Solutions & DataBase Publishing Software

Catalog Genie от компании Shared Content Solutions — законченное программное решение для проектирования и производства каталогов с таким содержанием, которое меняется в зависимости от получателя. Пакет позволяет обслуживать всю информацию об изделиях, в том числе связанные с ними иллюстрации и текст, соблюдая при этом стройность каталога, состоящего из категорий, разделов и частей. Вы сможете создавать специализированные каталоги для необходимых микросегментов рынка без кропотливой переработки страниц. Также вы сможете связать свой каталог с базой данных электронного каталога, чтобы использовать обновляемую информацию одновременно в двух версиях — печатной и электронной.

Create!form International

Компания выпускает для серверных платформ продукт Create!form, который включает модули Create!stream, Create!fax, Create!email и Create!archive, позволяющие с помощью стандартных офисных приложений получать отпечатки документов, графики, штрих-коды, а также печатать переменные данные. Для более простых задач выпускается пакет Create!flash.

Exstream Software

Пакет Dialogue, предлагаемый компанией Exstream Software, является высококачественным пакетом программ, реализующим расширенную композицию сложных документов. Dialogue разработан для производства персонализированных руководств, информационных бюллетеней и каталогов, брошюр, средств прямых продаж товаров по почте, рекламных объявлений и купонов, проспектов, страховых полисов и юридических документов.

Datalogics

DL Formatter от компании Datalogics — это приложение композиции с переменным данными, с интерфейсом WYSIWYG-проектирования шаблонов FrameMaker, InDesign или QuarkXPress. Инструментальные средства DL Formatter объединяют переменные данные с шаблоном и выводят индивидуализированную информацию в формат PostScript, PDF, PPML, VDX или VPS. Пакет автоматически добавляет страницы в зависимости от объема содержания. Кроме того, DL Formatter может автоматически создавать диаграммы и таблицы, основанные на переменных данных.

Electronics For Imaging

Известный разработчик контролеров печати поставляет Fiery FreeForm — пакет с оптимизированными версиями продуктов различных производителей, таких как, например, Persona, DL Formatter (подробная информация доступна по адресу www.efi.com/products/vdp_overview.fhtml).

Elixir Technologies Corporation

Компания пока только разрабатывает программное обеспечение Vitesse VIPP Designer для печати переменных данных. Пакет планируется к выпуску в I квартале этого года.

Esko-Graphics

Пакет VIPDesigner, разработанный Barco Graphics (в настоящее время принадлежит Esko-Graphics), является дополнительным модулем для QuarkXPress, которое позволяет сделать макет верстки полос интерактивным. Приложение написано на Frontier — кросс-платформенной среде создания сценариев, которая основана на языке программирования AppleScript. После того как определено размещение переменных данных, VIPDesigner интегрирует информацию из базы данных, импортированную в текстовом формате или через прямую связь при использовании базы FileMaker Pro, автоматически генерируя файлы, необходимые для печати переменной информации.

Пакет PrintStreamer для высокоскоростной цифровой печати с поддержкой переменных данных используют по лицензии Xeikon и IBM и другие OEM-клиенты.

Heidelberg

C цифровыми печатными машинами NexPress 2100 стандартно поставляется программное обеспечение NexTreme DL-100 VDP, предоставляющее комплекс функций необходимых для печати переменных данных.


Pageflex

Пакет Mpower3, поставляемый компанией PageFlex, является комплектом приложений для разработки и производства проектов по связям с общественностью, требующих особо тонкой настройки. Другой пакет, предлагаемый компанией, — Pageflex Persona.

TechnoDesign

Разработчик расширений выпускает дополнительный модуль Personalizer-X для QuarkXPress, который обеспечивает печать переменных данных и стандартный вывод в PostScript. Доступны также дополнительные драйверы для IntelliStream, PPML, PPML/VDX.

think121

Компания предлагает основанное на PDF решение для печати переменных данных и сопутствующие сервисы для Интернет и цифровой печати. Открытый для работы по Сети, pdfExpress обеспечивает комплексную обработку переменной информации из различных баз данных.

Vlogix

Для пользователей предлагаются контроллеры и программное обеспечение для печати переменных данных. Пакет VariScript состоит из таких модулей как Job Data Collection, Serializers, Bar Codes, Time Stamps, Variable Page Generator, vLogixRip, Processing and Finishing Controls, каждый из которых отвечает за конкретный участок работы, обеспечивая сбор данных из различных источников, их обработку, прохождение заданий, печать переменных данных и финишные операции.

Xerox

Программное обеспечение Xerox Variable data Intelligent PostScript PrintWare (VIPP) позволяет динамически обрабатывать большие массивы переменных данных и объединять их с предварительно подготовленными формами документов, содержащими переменные поля, непосредственно в процессе печати, поддерживая при этом номинальную скорость принтера.

VIPP динамически формирует образ страницы в печатающем модуле в момент ее печати и дает возможность хранить постоянные формы документов в самом принтере, причем в готовом для печати виде. По сети передается только поток переменных данных, который обрабатывается непосредственно в процессе печати. Пакет предоставляет широкий набор инструментов по созданию форм документов. Формы могут быть самонастраиваемыми, то есть могут управляться переменными данными.

Набор утилит по созданию форм VIPP включает:

  • Document Design System разработки Red Titan — генерирует драйверы для всех систем DocuTech и DocuPrint, обеспечивающие динамическую подстановку переменных данных в формы и высокоскоростное объединение данных с помощью утилиты Dynamic Document Formatter;
  • Proform Designer разработки Lytrod Software — полнофункциональное программное средство для создания форм, позволяющее создавать новые формы и персонализированные документы или преобразовывать существующие формы для принтеров Xerox, AFP, PostScript и PCL;
  • Papyrus разработки ISIS — легко интегрирует данные для последующей обработки документов, такие как подборка, оптическое распознавание символов, штриховое кодирование и т.д. Документы, которые можно просматривать и архивировать перед печатью, отличаются безукоризненной точностью воспроизведения;
  • AppBuilder для VIPP разработки Elixir — среда WYSIWYG для создания многостраничных документов и билетов заданий;
  • Transformation Suite разработки Elixir — мощный конвертер, позволяющий преобразовывать файлы в форматах AFP и Xerox в Xerox VIPP;
  • DeskTop Designer разработки Lytrod Software — полнофункциональное и удобное в использовании средство для создания персонализованных документов;
  • DocuRight разработки FirstLogic — интерфейс на основе Microsoft Word, позволяющий создавать персонализированные документы;
  • PrintShop Mail разработки Atlas Software BV — предоставляет быстрые и гибкие средства для создания персонализированных документов с переменными данными и графикой.

Xeikon

Архитектура системы eXpert DFE, основанной на PrintStreamer 2, оптимизирована для печати переменных на цифровых машинах Xeikon. Переменные данные, расположенные на специальных слоях, объединяются во время печати с неизменными частями страниц. При этом число слоев, содержащих переменные данные, ничем не ограничено.

Известен был также пакет Private для подготовки документов с переменными данными. Основой для работ являлся файл EPS, который мог быть подготовлен в любой программе и база данных. Пакет содержал средства управления форматированием на основе переменных данных: изменение дизайна полей и различные манипуляции с данными (от сортировки до определения цветов).

XMPie

Пакет для печати переменных данных XMPie PersonalEffect поддерживает форматы PDF, PPML и Creo VPS (Variable Print Specification).

Objectif Lune

Компания предлагает программное обеспечение для работы с формами, диаграммами, деловой документацией и печати переменных данных и почтовых рассылок в пакете под названием PlanetPress Suite.

Среди других интересных разработчиков можно также назвать компании PrintSoft (http://www.printsoft.de/), Solimar Systems (http://www.tukanda.com/), Scitex Digital Printing (http://www.scitexdpi.com/), T/R Systems (http://www.trsystems.com/), MindGate Technologies, Inc. (http://www.mindgate.com/) и GMC Software Technology (http://www.gmc.net/).

В заключение — несколько советов покупателям ПО. Для верного выбора пакетов необходимо понимать, как они работают, для чего нужно время. Поэтому непременно требуйте разносторонней демонстрации программы в действии. Кроме того, получите руководство пользователя, подробное описание продукта и демо-версию с целью детальных испытаний. Обязательно следует убедиться в том, что вы вкладываете деньги в такое программное обеспечение, которое впоследствии принесет доход. И наконец, не забывайте о гарантиях обучения и дальнейшей поддержки.

PHP var dump () vs print r()

в чем разница между var_dump() и print_r() С точки зрения выплевывания массива как строки?

12 ответов

на var_dump функция отображает структурированную информацию о переменных / выражениях, включая его тип и стоимостью. Массивы рекурсивно исследуются со значениями, отступами для отображения структуры. Он также показывает, какие значения массива и свойства объекта являются ссылками.


на print_r() отображает информацию о переменной таким образом, чтобы ее могли прочитать люди. значения массива будут представлены в формате, который показывает ключи и элементов. Аналогичная нотация используется для объектов.

пример:

var_dump($obj) будет отображаться ниже вывода на экране.

и print_r($obj) будет отображаться ниже вывода на экране.

Подробнее

как правило, print_r( ) вывод лучше, лаконичнее и легче читать, он же более удобочитаемый, но не может отображать типы данных.

С print_r() вы также можете сохранить результат в переменную:

, который var_dump() не может. Еще var_dump() может отображать типы данных.

var_dump() покажет вам тип вещи, а также то, что в нем.

так что вы получите => (string)»var» пример здесь.

print_r() будет просто выводить содержимое.

будет выходной => «var» пример здесь.

Если вы спрашиваете, когда вы должны использовать что, я обычно использую print_r() для отображения значений и var_dump() при возникновении проблем с типами переменных.

var_dump отображает структурированную информацию об объекте / переменной. Это включает в себя тип и ценностей. Как print_r массивы рекурсируются и отступы.

print_r выводит удобочитаемом информация о значениях с форматом, представляющим ключи и элементы для массивов и объектов.

самое главное, чтобы уведомление var_dump будет выводить тип, а также значения а print_r нет.

существенные различия между var_dump и print_r

функции выводит информацию о переменной, а var_dump несколько параметров, которые будут сброшены, где as print_r может принимать два параметра, из которых первый параметр является переменной, которую вы хотите сбросить, а второй-логическое значение.

var_dump не может вернуть какое-либо значение, оно может только сбрасывать / печатать значения, где as print_r может вернуть информацию о переменной, если мы установим второй параметр print_r to правда. Возвращаемое значение print_r будет строка.

информация, напечатанная на print_r гораздо больше в читаемом формате, где as var_dump печать исходных значений.

print_r функция может использоваться во многих контекстах, где as var_dump может использоваться в целях отладки в основном, поскольку он не может возвращать значение.

Я бы aditionally рекомендовал поместить вывод var_dump () или printr в pre тег при выводе в браузер.

даст более четкий результат.

var_dump($var) показывает подробные сведения, предоставляя дополнительные сведения о

  • тип данных значения (включая элементы-потомки)
  • количество элементов в переменной
  • длина значения

с большими массивами print_r может отображать гораздо больше информации, чем полезно. Вы можете усечь его так, показывая первые 2000 символов или сколько вам нужно.

вложенностями() :-


  1. эта функция отображает структурированную информацию об одном или нескольких выражениях, включая их тип и значение. Массивы и объекты рекурсивно исследуются со значениями, отступами для отображения структуры.
  2. эта функция отображает номер элемента в переменной.
  3. эта функция отображает длину переменной.
  4. не удается вернуть значение только распечатать значение.
  5. это используется для отладки цель.

пример:

print_r (): —

  1. печатает читабельную информацию о переменной.
  2. Не отображать номер элемента в переменной как var_dump ().
  3. не отображать длину переменной в переменной как var_dump ().
  4. верните значение, если мы установим для второго параметра значение true в printf_r().

пример:

print_r() и var_dump () — функции отладки массива, используемые в PHP для отладки. функция print_r () возвращает ключи массива и его члены в виде массива ([key] = value), тогда как функция var_dump () возвращает список массивов со своими ключами массива с типом данных и длиной, а также e.G Array(array_length)<[0] = строка (1)'a'>.

мы можем передать несколько параметров с вложенностями например:

В чем разница между эхом, печатью и print_r в PHP?

Я использую echo и print_r много, и почти никогда не использую print .

Я чувствую echo это макрос, и print_r это псевдоним var_dump .

Но это не стандартный способ объяснить различия.

print и echo более или менее то же самое; они оба языковых конструкций , которые отображают строки. Различия являются тонкими: print имеет возвращаемое значение 1 , поэтому он может быть использован в выражениях , тогда echo имеет void тип возврата; echo может принимать несколько параметров, хотя такое использование редко; echo немного быстрее print . (Лично я всегда использовать echo , никогда print .)

var_dump печатает подробный дамп переменной, включая ее тип и тип любых подпунктов (если это массив или объект). print_r печатает переменную в более читабельной форме: строки не указаны, информация о типе опущена, размеры массива не указан, и т.д.

var_dump как правило , более полезным , чем print_r при отладке, в моем опыте. Это особенно полезно , когда вы не знаете точно , что значения / типов вы в вашем переменных. Рассмотрим эту тестовую программу:

С print_r вы не можете сказать, разница между 0 и 0.0 , или false и » :

эхо

    Выходы одной или нескольких строк, разделенных запятыми

Нет возвращаемого значения

например echo «String 1», «String 2»

Распечатать

    Выходы только одна строка

Возвращает 1 , поэтому оно может быть использовано в выражении

например print «Hello»

или, if ($expr && print «foo»)


print_r ()

  • Выдает удобочитаемое представление любого одного значения
  • Принимает не только строки, но и других типов, включая массивы и объекты, форматирование их, чтобы быть читаемыми
  • Полезно при отладке
  • Может возвращать свой выходной сигнал в качестве возвращаемого значения (вместо эха), если второй дополнительный аргумент даются

var_dump ()

  • Выходы удобочитаемое представление одного или нескольких значений , разделенных запятыми
  • Принимает не только строки, но и других типов, включая массивы и объекты, форматирование их, чтобы быть читаемыми
  • Использует другой формат вывода к print_r() , например , он также печатает тип значений
  • Полезно при отладке
  • Нет возвращаемого значения

var_export ()

  • Выводит читаемый человек и PHP Исполняемые представления любого одного значения
  • Принимает не только строки, но и других типов, включая массивы и объекты, форматирование их, чтобы быть читаемыми
  • Использует другой формат вывода для обоих print_r() и var_dump() — в результате чего выход действителен код PHP!
  • Полезно при отладке
  • Может возвращать свой выходной сигнал в качестве возвращаемого значения (вместо эха), если второй дополнительный аргумент даются
  • Несмотря на то, print может быть использовано в выражении, я рекомендую людям избежать этого, потому что это плохо для удобочитаемости кода (и потому , что вряд ли когда — либо быть полезным). Правила приоритета , когда он взаимодействует с другими операторами , также может привести к путанице. Из — за этого, я лично никогда не есть причина , чтобы использовать его в течение echo .
  • Принимая во внимание , echo и print языковые конструкции, print_r() и var_dump() / var_export() являются регулярными функциями. Вам не нужно заключать в круглые скобки аргументы echo или print (и если вы используете их, они будут рассматриваться как они были бы в выражении).
  • В то время как var_export() возвращает действительный PHP код , позволяющие значения для чтения позже, опираясь на это для производства коды может сделать его проще ввести уязвимости в системе безопасности из — за необходимость использования eval() . Было бы лучше использовать формат JSON , как вместо того, чтобы хранить и читать обратно значение. Скорость будет сравнима.

(PHP 4, PHP 5, PHP 7)

print_r — Выводит удобочитаемую информацию о переменной

Описание

print_r() выводит информацию о переменной в удобочитаемом виде.

print_r() , var_dump() и var_export() могут также показывать защищенные и закрытые атрибуты объектов. Статические элементы класса не будут отображены.

Список параметров

Выражение для вывода на экран.

Если вы хотите перехватить вывод print_r() , используйте параметр return . Если его значение равно TRUE , то print_r() вернет информацию вместо вывода в браузер.

Возвращаемые значения

Если в функцию передаются значения типов string , integer или float , будет напечатано само значение. Если передается массив array , значения будут напечатаны в формате, показывающем ключи и элементы массива. Аналогичный формат вывода используется для объектов.

Если параметр return установлен в TRUE , данная функция вернет строку ( string ). В противном случае возвращаемое значение будет равно TRUE .

Примечания

При использовании параметра return данная функция использует внутреннюю буферизацию вывода, поэтому она не может быть использована внутри callback-функции ob_start() .

Примеры

Пример #1 Пример использования print_r()


Результат выполнения данного примера:

Пример #2 Пример использования параметра return

Смотрите также

  • ob_start() — Включение буферизации вывода
  • var_dump() — Выводит информацию о переменной
  • var_export() — Выводит или возвращает интерпретируемое строковое представление переменной

User Contributed Notes 36 notes

I add this function to the global scope on just about every project I do, it makes reading the output of print_r() in a browser infinitely easier.

function print_r2 ( $val ) <
echo » ;
>
?>

It also makes sense in some cases to add an if statement to only display the output in certain scenarios, such as:

I’ve fixed function wrote by Matt to reverse print_r — it had problems with null values. Created a GIST for that too so please add any future fixes in there instead of this comment section:
https://gist.github.com/simivar/037b13a9bbd53ae5a092d8f6d9828bc3

return $input ;
> else <
// this is an array or object, lets parse it
$match = array();
if ( preg_match ( «/(\s<5,>)\(/» , $lines [ 1 ], $match )) <
// this is a tested array/recursive call to this function
// take a set of spaces off the beginning
$spaces = $match [ 1 ];
$spaces_length = strlen ( $spaces );
$lines_total = count ( $lines );
for ( $i = 0 ; $i $lines_total ; $i ++) <
if ( substr ( $lines [ $i ], 0 , $spaces_length ) == $spaces ) <
$lines [ $i ] = substr ( $lines [ $i ], $spaces_length );
>
>
>
$is_object = trim ( $lines [ 0 ]) == ‘stdClass Object’ ;
array_shift ( $lines ); // Array
array_shift ( $lines ); // (
array_pop ( $lines ); // )
$input = implode ( «\n» , $lines );
$matches = array();
// make sure we only match stuff with 4 preceding spaces (stuff for this array and not a nested one)
preg_match_all ( «/^\s<4>\[(.+?)\] \=\> /m» , $input , $matches , PREG_OFFSET_CAPTURE | PREG_SET_ORDER );
$pos = array();
$previous_key = » ;
$in_length = strlen ( $input );
// store the following in $pos:
// array with key = key of the parsed array’s item
// value = array(start position in $in, $end position in $in)
foreach ( $matches as $match ) <
$key = $match [ 1 ][ 0 ];
$start = $match [ 0 ][ 1 ] + strlen ( $match [ 0 ][ 0 ]);
$pos [ $key ] = array( $start , $in_length );
if ( $previous_key != » ) <
$pos [ $previous_key ][ 1 ] = $match [ 0 ][ 1 ] — 1 ;
>
$previous_key = $key ;
>
$ret = array();
foreach ( $pos as $key => $where ) <
// recursively see if the parsed out value is an array too
$ret [ $key ] = print_r_reverse ( substr ( $input , $where [ 0 ], $where [ 1 ] — $where [ 0 ]));
>

return $is_object ? (object) $ret : $ret ;
>
>
?>

The following will output an array in a PHP parsable format:

if( count ( $items ) > 0 )
<
echo $root . ‘ = array(‘ ;

Here is a print_r that produces xml:
(now you can expand/collapse the nodes in your browser)

( ‘Content-Type: text/xml; charset=UTF-8’ );
echo print_r_xml ( $some_var );

function print_r_xml ( $arr , $first = true ) <
$output = «» ;
if ( $first ) $output .= » \n \n» ;
foreach( $arr as $key => $val ) <
if ( is_numeric ( $key )) $key = «arr_» . $key ; // switch ( gettype ( $val )) <
case «array» :
$output .= » . htmlspecialchars ( $key ). » type=’array’ size='» . count ( $val ). «‘>» .
print_r_xml ( $val , false ). » . htmlspecialchars ( $key ). «>\n» ; break;
case «boolean» :
$output .= » . htmlspecialchars ( $key ). » type=’bool’>» .( $val ? «true» : «false» ).
» . htmlspecialchars ( $key ). «>\n» ; break;
case «integer» :
$output .= » . htmlspecialchars ( $key ). » type=’integer’>» .
htmlspecialchars ( $val ). » . htmlspecialchars ( $key ). «>\n» ; break;
case «double» :
$output .= » . htmlspecialchars ( $key ). » type=’double’>» .
htmlspecialchars ( $val ). » . htmlspecialchars ( $key ). «>\n» ; break;
case «string» :
$output .= » . htmlspecialchars ( $key ). » type=’string’ size='» . strlen ( $val ). «‘>» .
htmlspecialchars ( $val ). » . htmlspecialchars ( $key ). «>\n» ; break;
default:
$output .= » . htmlspecialchars ( $key ). » type=’unknown’>» . gettype ( $val ).
» . htmlspecialchars ( $key ). «>\n» ; break;
>
>
if ( $first ) $output .= » \n» ;
return $output ;
>

Here is another version that parses the print_r() output. I tried the one posted, but I had difficulties with it. I believe it has a problem with nested arrays. This handles nested arrays without issue as far as I can tell.

function print_r_reverse ( $in ) <
$lines = explode ( «\n» , trim ( $in ));
if ( trim ( $lines [ 0 ]) != ‘Array’ ) <
// bottomed out to something that isn’t an array
return $in ;
> else <
// this is an array, lets parse it
if ( preg_match ( «/(\s<5,>)\(/» , $lines [ 1 ], $match )) <
// this is a tested array/recursive call to this function
// take a set of spaces off the beginning
$spaces = $match [ 1 ];
$spaces_length = strlen ( $spaces );
$lines_total = count ( $lines );
for ( $i = 0 ; $i $lines_total ; $i ++) <
if ( substr ( $lines [ $i ], 0 , $spaces_length ) == $spaces ) <
$lines [ $i ] = substr ( $lines [ $i ], $spaces_length );
>
>
>
array_shift ( $lines ); // Array
array_shift ( $lines ); // (
array_pop ( $lines ); // )
$in = implode ( «\n» , $lines );
// make sure we only match stuff with 4 preceding spaces (stuff for this array and not a nested one)
preg_match_all ( «/^\s<4>\[(.+?)\] \=\> /m» , $in , $matches , PREG_OFFSET_CAPTURE | PREG_SET_ORDER );
$pos = array();
$previous_key = » ;
$in_length = strlen ( $in );
// store the following in $pos:
// array with key = key of the parsed array’s item
// value = array(start position in $in, $end position in $in)
foreach ( $matches as $match ) <
$key = $match [ 1 ][ 0 ];
$start = $match [ 0 ][ 1 ] + strlen ( $match [ 0 ][ 0 ]);
$pos [ $key ] = array( $start , $in_length );
if ( $previous_key != » ) $pos [ $previous_key ][ 1 ] = $match [ 0 ][ 1 ] — 1 ;
$previous_key = $key ;
>
$ret = array();
foreach ( $pos as $key => $where ) <
// recursively see if the parsed out value is an array too
$ret [ $key ] = print_r_reverse ( substr ( $in , $where [ 0 ], $where [ 1 ] — $where [ 0 ]));
>
return $ret ;
>
>

This works around the hacky nature of print_r in return mode (using output buffering for the return mode to work is hacky. ):

/**
* An alternative to print_r that unlike the original does not use output buffering with
* the return parameter set to true. Thus, Fatal errors that would be the result of print_r
* in return-mode within ob handlers can be avoided.
*
* Comes with an extra parameter to be able to generate html code. If you need a
* human readable DHTML-based print_r alternative, see http://krumo.sourceforge.net/
*
* Support for printing of objects as well as the $return parameter functionality
* added by Fredrik Wollsén (fredrik dot motin at gmail), to make it work as a drop-in
* replacement for print_r (Except for that this function does not output
* paranthesises around element groups. ;) )
*
* Based on return_array() By Matthew Ruivo (mruivo at gmail)
* (http://se2.php.net/manual/en/function.print-r.php#73436)
*/
function obsafe_print_r ( $var , $return = false , $html = false , $level = 0 ) <
$spaces = «» ;
$space = $html ? » » : » » ;
$newline = $html ? «
» : «\n» ;
for ( $i = 1 ; $i 6 ; $i ++) <
$spaces .= $space ;
>
$tabs = $spaces ;
for ( $i = 1 ; $i $level ; $i ++) <
$tabs .= $spaces ;
>
if ( is_array ( $var )) <
$title = «Array» ;
> elseif ( is_object ( $var )) <
$title = get_class ( $var ). » Object» ;
>
$output = $title . $newline . $newline ;
foreach( $var as $key => $value ) <
if ( is_array ( $value ) || is_object ( $value )) <
$level ++;
$value = obsafe_print_r ( $value , true , $html , $level );
$level —;
>
$output .= $tabs . «[» . $key . «] => » . $value . $newline ;
>
if ( $return ) return $output ;
else echo $output ;
>
?>

Built on a function earlier posted in these comments as stated in the Doc comment. Cheers! /Fredrik (Motin)

I have written a nice debugging function.
This function handles arrays beautifully.
//Debug variables, $i and $k are for recursive use
function DebugDisplayVar ( $input , $name = «Debug» , $i = «0» , $k = array( «Error» )) <
if( is_array ( $input ))
< foreach ( $input as $i =>$value ) <
$temp = $k ;
$temp [] = $i ;
DebugDisplayVar ( $value , $name , $i , $temp );>
>else < //if not array
echo «$» . $name ; //[$k]
foreach ( $k as $i => $value ) <
if( $value !== «Error» )
>
echo » = $input
» ;
> >

//outputs
Debug [ 0 ] = value
Debug [ 1 ] = another value
ect .

You cannot use print_r(), var_dump() nor var_export() to get static member variables of a class. However, in PHP5 you can use Reflection classes for this:

= new ReflectionClass ( ‘Static’ );
print_r ( $reflection -> getStaticProperties ());

I always use this function in my code, because most of my functions return an Array or Boolean :

function printr ( $object , $name = » ) <

if ( is_array ( $object ) ) <
print ( » ) ;
> else <
var_dump ( $object ) ;
>

?>

( print_r gives no output on FALSE and that can be annoying! )


easier and better readability with print_r and vardump for php developers

// New var export option

A slight amendment to Matt’s awesome print_r_reverse function (Thank You, a life-saver — data recovery :-) . If the output is copied from a Windows system, the end of lines may include the return character «\r» and so the scalar (string) elements will include a trailing «\r» character that isn’t suppose to be there. To resolve, replace the first line in the function with.

= preg_split ( ‘#\r?\n#’ , trim ( $in )); ?>

This will work for both cases (Linux and Windows).

I include the entire function below for completeness, but all credit to Matt, the original author, Thank You.

//Author: Matt (http://us3.php.net/print_r)
function print_r_reverse ( $in ) <
$lines = preg_split ( ‘#\r?\n#’ , trim ( $in ));
if ( trim ( $lines [ 0 ]) != ‘Array’ ) <
// bottomed out to something that isn’t an array
return $in ;
> else <
// this is an array, lets parse it
if ( preg_match ( «/(\s<5,>)\(/» , $lines [ 1 ], $match )) <
// this is a tested array/recursive call to this function
// take a set of spaces off the beginning
$spaces = $match [ 1 ];
$spaces_length = strlen ( $spaces );
$lines_total = count ( $lines );
for ( $i = 0 ; $i $lines_total ; $i ++) <
if ( substr ( $lines [ $i ], 0 , $spaces_length ) == $spaces ) <
$lines [ $i ] = substr ( $lines [ $i ], $spaces_length );
>
>
>
array_shift ( $lines ); // Array
array_shift ( $lines ); // (
array_pop ( $lines ); // )
$in = implode ( «\n» , $lines );
// make sure we only match stuff with 4 preceding spaces (stuff for this array and not a nested one)
preg_match_all ( «/^\s<4>\[(.+?)\] \=\> /m» , $in , $matches , PREG_OFFSET_CAPTURE | PREG_SET_ORDER );
$pos = array();
$previous_key = » ;
$in_length = strlen ( $in );
// store the following in $pos:
// array with key = key of the parsed array’s item
// value = array(start position in $in, $end position in $in)
foreach ( $matches as $match ) <
$key = $match [ 1 ][ 0 ];
$start = $match [ 0 ][ 1 ] + strlen ( $match [ 0 ][ 0 ]);
$pos [ $key ] = array( $start , $in_length );
if ( $previous_key != » ) $pos [ $previous_key ][ 1 ] = $match [ 0 ][ 1 ] — 1 ;
$previous_key = $key ;
>
$ret = array();
foreach ( $pos as $key => $where ) <
// recursively see if the parsed out value is an array too
$ret [ $key ] = print_r_reverse ( substr ( $in , $where [ 0 ], $where [ 1 ] — $where [ 0 ]));
>
return $ret ;
>
>
?>

Here is a function that formats the output of print_r as a expandable/collapsable tree list using HTML and JavaScript.
function print_r_tree ( $data )
<
// capture the output of print_r
$out = print_r ( $data , true );

// replace something like ‘[element] => (‘ with .

// replace ‘)’ on its own on a new line (surrounded by whitespace is ok) with ‘

// print the javascript function toggleDisplay() and then the transformed output
echo » . «\n $out » ;
>
?>
Pass it a multidimensional array or object and each sub-array/object will be hidden and replaced by a html link that will toggle its display on and off.
Its quick and dirty, but great for debugging the contents of large arrays and objects.
Note: You’ll want to surround the output with

print_r is used for debug purposes. Yet I had some classes where I just wanted the values coming out of the database, not all the other crap. thus i wrote the following function. If your class has an toArray function, that one will be called otherwise it will return the object as is. print_neat_classes_r is the function that should be called!

( $array , $return = false ) <
return print_r ( self :: neat_class_print_r ( $array ), $return );
>

function do_print_r ( $array , $return = false ) <
if( is_object ( $array ) && method_exists ( $array , ‘toArray’ )) <
return $array -> toArray ();
>else if( is_array ( $array )) <
foreach( $array as $key => $obj ) <
$array [ $key ] = self :: do_print_r ( $obj , $return );
>
return $array ;
>else <
return $array ;
>
>
?>

A simple function to send the output of print_r to firebug.
The script creates a dummy console object with a log method for when firebug is disabled/not available.

I use this all the time when debugging objects, but when you have a very large object with big arrays of sub-objects, it’s easy to get overwhelmed with the large amount of output. sometimes you don’t want to see absolutely every sub-object.

I made this function to debug objects while «hiding» sub-objects of certain types. This also color codes the output for a more readable printout.

function wtf ( $var , $arrayOfObjectsToHide = null , $fontSize = 11 )
<
$text = print_r ( $var , true );

if ( is_array ( $arrayOfObjectsToHide )) <

foreach ( $arrayOfObjectsToHide as $objectName ) <

$searchPattern = ‘#(‘ . $objectName . ‘ Object\n(\s+)\().*?\n\2\)\n#s’ ;
$replace = «$1 HIDDEN — courtesy of wtf() )» ;
$text = preg_replace ( $searchPattern , $replace , $text );
>
>

// color code objects
$text = preg_replace ( ‘#(\w+)(\s+Object\s+\()#s’ , ‘ $1 $2’ , $text );
// color code object properties
$text = preg_replace ( ‘#\[(\w+)\:(public|private|protected)\]#’ , ‘[ $1 : $2 ]’ , $text );

// example usage:
wtf ( $myBigObject , array( ‘NameOfObjectToHide_1’ , ‘NameOfObjectToHide_2’ ));

A slight modification to the previous post to allow for arrays containing mutli line strings. haven’t fully tested it with everything, but seems to work great for the stuff i’ve done so far.

function print_r_reverse (& $output )
<
$expecting = 0 ; // 0=nothing in particular, 1=array open paren ‘(‘, 2=array element or close paren ‘)’
$lines = explode ( «\n» , $output );
$result = null ;
$topArray = null ;
$arrayStack = array();
$matches = null ;
while (!empty( $lines ) && $result === null )
<
$line = array_shift ( $lines );
$trim = trim ( $line );
if ( $trim == ‘Array’ )
<
if ( $expecting == 0 )
<
$topArray = array();
$expecting = 1 ;
>
else
<
trigger_error ( «Unknown array.» );
>
>
else if ( $expecting == 1 && $trim == ‘(‘ )
<
$expecting = 2 ;
>
else if ( $expecting == 2 && preg_match ( ‘/^\[(.+?)\] \=\> (.+)$/’ , $trim , $matches )) // array element
<
list ( $fullMatch , $key , $element ) = $matches ;
if ( trim ( $element ) == ‘Array’ )
<
$topArray [ $key ] = array();
$newTopArray =& $topArray [ $key ];
$arrayStack [] =& $topArray ;
$topArray =& $newTopArray ;
$expecting = 1 ;
>
else
<
$topArray [ $key ] = $element ;
>
>
else if ( $expecting == 2 && $trim == ‘)’ ) // end current array
<
if (empty( $arrayStack ))
<
$result = $topArray ;
>
else // pop into parent array
<
// safe array pop
$keys = array_keys ( $arrayStack );
$lastKey = array_pop ( $keys );
$temp =& $arrayStack [ $lastKey ];
unset( $arrayStack [ $lastKey ]);
$topArray =& $temp ;
>
>
// Added this to allow for multi line strings.
else if (!empty( $trim ) && $expecting == 2 )
<
// Expecting close parent or element, but got just a string
$topArray [ $key ] .= «\n» . $line ;
>
else if (!empty( $trim ))
<
$result = $line ;
>
>

$output = implode ( n , $lines );
return $result ;
>

/**
* @param string $output : The output of a multiple print_r calls, separated by newlines
* @return mixed[] : parseable elements of $output
*/
function print_r_reverse_multiple ( $output )
<
$result = array();
while (( $reverse = print_r_reverse ( $output )) !== NULL )
<
$result [] = $reverse ;
>
return $result ;
>

$output = ‘
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
[3] => Array
(
[nest] => yes
[nest2] => Array
(
[nest] => some more
asffjaskkd
)
[nest3] => o rly?
)
)
)

some extra stuff
‘ ;
var_dump ( print_r_reverse ( $output ), $output );


print_r — Выводит удобочитаемую информацию о переменной

Описание

print_r() выводит информацию о переменной в удобочитаемом виде.

print_r() , var_dump() и var_export() могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов в PHP 5. Статические элементы класса не будут отображены.

Следует помнить, что print_r() установит внутренний указатель массива в его конец. Используйте функцию reset() для установки его в начало массива.

Список параметров

Выражение для вывода на экран.

Если Вы хотите перехватить вывод print_r() , используйте параметр return. Если его значение равно TRUE, то print_r() вернет результат вывода вместо вывода в браузер (который производится по умолчанию).

Возвращаемые значения

Если в функцию передаются значения типов string , integer или float , будет напечатано само значение. Если передается массив array , значениия будут напечатаны в формате, показывающем ключи и елементы массива. Аналогичный формат вывода используется для объектов.

Примечания

Эта функция использует внутреннюю буферизацию вывода с этим параметром, поэтому она не может быть использована внутри коллбэк-функции ob_start() .

Список изменений

Версия Описание
4.3.0 Добавлен параметр return. Если Вам необходимо перехватить вывод print_r() в ранних версиях PHP, используйте output-control функции.
4.0.4 В версиях PHP до 4.0.4, print_r() будет выполняться бесконечно, если передается массив или объект, который содержит прямую или косвенную ссылку на себя. Примером является print_r($GLOBALS), поскольку $GLOBALS является глобальной переменной, которая содержит ссылку на себя.

Примеры

Пример #1 Пример использования print_r()

Функция Print_r

Функция Print_r выводит удобочитаемую информацию о переменной.
Функции Print_r, Var_dump и Var_export могут также показывать защищенные (protected) и закрытые (private) атрибуты объектов. Статические элементы класса не будут отображены.

Параметр Expression являет собой выражение для вывода на экран.

Если вы хотите перехватить вывод Print_r, используйте параметр Return. Если его значение равно TRUE, то функция Print_r вернет результат вывода вместо вывода в браузер (который производится по умолчанию).

Если в функцию передаются значения типов String, Integer или Float, будет напечатано само значение. Если передается массив Array, значения будут напечатаны в формате, показывающем ключи и элементы массива. Аналогичный формат вывода используется для объектов.

Если параметр Return установлен в TRUE, данная функция вернет строку (string). В противном случае возвращаемое значение будет равно TRUE.

При использовании параметра Return данная функция использует внутреннюю буферизацию вывода, поэтому она не может быть использована внутри callback-функции Ob_start.

Что означает _r в PHP print_r ()?

Я видел такой ответ на этот вопрос , но я не уверен, что это то же самое для PHP . и если это так, в чем смысл повторного входа?

3 ответа

print_r — печатает удобочитаемую информацию о переменной

поэтому ответ « читабельный »

Из руководства по PHP:

print_r — печатает удобочитаемую информацию о переменной

print_r том, что он печатает информацию о переменной понятным для человека способом, в отличие, например, от var_dump .

Таким образом, хорошее предположение состоит в том, что r обозначает читабельный .

print_r вернет любой вывод, произведенный на экране, и создаст удобочитаемый формат объекта

Илон Маск рекомендует:  Что такое код createmetafile
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL