Php вывод данных объекта

Вывод значения переменной в PHP (echo, print_r, var_dump)

В PHP есть несколько способов вывести значениепеременной, но далеко не все умеют работать со всеми типами данных. Рассмотрим разные способы.

echo

Языковая конструкция echo без проблем может выводить на страницу значение числовой или строковой перемененной. Также она может вывести значение переменной в формате DateTime, преобразовав его в строку. Но если сделать

var_dump

Функция var_dump печатает выводит содержание переменной. Заодно указывает типы данных, к которым относятся переменные. Попробуем её на практике:

array(3) < [0] =>int(5) [1] => bool(false) [2] => string(8) "Мышь" >

Функция var_dump выводит переменную с переносами строк. Поэтому обрамить результат вывода в тег pre, то код станет легче воспринимать. Попробуем сделать так

array(3) < [0] =>int(5) [1] => bool(false) [2] => string(8) "Мышь" >

В отличии от echo функция var_dump выводит абсолютно все типы данных. Часто помогает в разработке и отладке кода.

Функция print_r — это аналог функции var_dump, но в её выводе нет указания на тип данных. Попробуем её на практике:

Если вместо второго элемента массива «false» поставить true, то будет выводиться единица, а не пустое место:

Всё в одной удобной функции

Если Вы уже прочитали статью «Функции в PHP», то сможете догадаться, что лучше всего для вывода переменной сделать функцию-обёртку. Выберем для этих целей именно print_r, потому что зачастую print_r используется чаще, чем var_dump. Попробуем сделать это:

Всё готово! Теперь во время отладки и разработки можно пользоваться функцией PrintObject( ), чтобы вывести содержание переменной. Но на реальных сайтах может возникнуть небольшая проблема со стилями, которые будут влиять на содержимое блока . Эти стили можно переопределить. Поэтому чуть доработаем пример:

Этих стилей будет достаточно, чтобы выводить читаемый результат на вёрстке практически любой сложности.

Источник

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
?>

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

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

Источник

Как получить значение объекта?

Простой вопрос по синтаксису. Есть объекты $ob, если сделать print_r($ob) , то выводится:

stdClass Object ( [XXXXX] => stdClass Object ( [id] => 111111 [name] => XXXXX ) )

Мне нужно получить значение name и id, если знать, что там «XXXXX», то я знаю как получить

$name = $ob->XXXXX->name; $id = $ob->XXXXX->id;

Но если ХХХХХ постоянно меняется, как получать $name и $id?

Оценить 2 комментария

Уточню, кроме этого объекта нет больше данных, только $ob. Если сделать print_r($ob), то выводит, то что я писал выше. При каждом обновлении страницы $ob будет другой.

Как получать и выводить $name и $id ?

В общем из комментариев @hlogeon стало понятно, что объект можно перевести в массив

$objArr = (array)$ob; foreach ($objArr as $key => $value)< $name = $value->name; $id = $value->id; > echo "$name"; echo "$id";
$foo = new Foo(); $reflect = new ReflectionClass($foo); $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);

Если в вашем объекте верхнего уровня(который содержиьт объект XXXX) содержатся только объекты, от которых вам надо будет получить свойства, можно провернуть нечто вроде:

$names = array(); $ids = array(); foreach($props as $property)< $propName = $property->getName(); $names[] = $object->$propName->name; $ids[] = $object->$propName->id; >

Или как то так. Я надеюсь, общая мысль ясна и я правильно понял вопрос

Я к посту сделал уточняющие комментарии. Объект получен путем обработки файла функцией json_decode, поэтому с вашим кодом у меня возникают трудности с первой строчки. Про класс объекта я ничего не знаю.

Пробовал, что-то такое $foo = new stdClass(); не работает.

Так вам ничего и не надо знать про класс же.

$reflect = new ReflectionClass($yourNewJsonDecodedObject);

В чем проблема такого создания ReflectionClass?
В чем проблема привести ваш объект к \ArrayObject?
В чем проблема привести ваш объект к ассоциативному массиву?

$yourNewJsonDecodedObject = json_decode($some_string);
$reflect = new ReflectionClass($yourNewJsonDecodedObject);

Если сделать
print_r($reflect);
то выдает
ReflectionClass Object ( [name] => stdClass )

В вашем коде есть строчка

Если сделать
print_r($props);

И в целом массивы имен и айди пустые.

Источник

Читайте также:  Css all select dropdowns
Оцените статью