Python's repr() возвращает выход, где
eval(repr(object)) == object
Вызывается предст() и преобразования строк (обратные кавычки) для вычисления «официального» строкового представления объекта. Если это вообще возможно, это должно выглядеть как действительное выражение Python, которое может быть использовано для воссоздания объекта с тем же значением (с учетом соответствующей среды).
Так что ближе всего в PHP будет
Ключевое слово здесь распознаваем. В то время как функции print_r
и var_dump
предоставят определенное представление данных, переданных им, они нелегко обрабатываются и не выглядят как выражение PHP, которое может быть оценено.
Пример:
var_export(['foo', 'bar', 1,2,3]);
даст
array (
0 => 'foo',
1 => 'bar',
2 => 1,
3 => 2,
4 => 3,
)
и совершенно правильный код PHP:
$data = ['foo', 'bar', 1, 2, 3];
$repr = var_export($data, true);
// have to use it with return though to eval it back into a var
$evald = eval("return $repr;");
var_dump($evald == $data); // true
Другим вариантом было бы использовать serialize
, чтобы получить каноническое и анализируемое представление данных типа, например.
$data = ['foo', 'bar', 1, 2, 3];
$repr = serialize($data);
// -> a:5:{i:0;s:3:"foo";i:1;s:3:"bar";i:2;i:1;i:3;i:2;i:4;i:3;}
var_dump(unserialize($repr) == $data); // true
В отличии от var_export
, полученного представления не является выражение РНР, но уплотненная строка, указывающая тип и его свойства/значение (сериализация).
Но вы, скорее всего, просто ищете json_encode
, как указано в другом месте.
Создание этого сообщества Wiki, потому что я уже ответил на это в данном обмане.
http://php.net/manual/en/function.print-r.php –
@DietrichEpp: Это должно быть инкапсулировано в 'ob_start()' и 'ob_end_clean()', но я буду использовать что на данный момент. –
В любом случае вы должны использовать отладчик. – KingCrunch