У чому різниця між var_dump, var_exportі print_r?
У чому різниця між var_dump, var_exportі print_r?
Відповіді:
var_dump призначений для налагодження. var_dumpзавжди друкує результат.
// var_dump(array('', false, 42, array('42')));
array(4) {
[0]=> string(0) ""
[1]=> bool(false)
[2]=> int(42)
[3]=> array(1) {[0]=>string(2) "42")}
}
print_r також призначений для налагодження, але не включає тип учасника. Це добре використовувати, якщо ви знаєте типи елементів у своєму масиві, але в іншому випадку можна ввести в оману. print_rза замовчуванням друкує результат, але дозволяє повертати як рядок замість цього за допомогою додаткового$returnпараметра.
Array (
[0] =>
[1] =>
[2] => 42
[3] => Array ([0] => 42)
)
var_export друкує дійсний код PHP. Корисно, якщо ви обчислили деякі значення і хочете, щоб результати були постійними в іншому сценарії. Зауважте, щоvar_exportне вдається обробити еталонні цикли / рекурсивні масиви, тоді якvar_dumpіprint_rперевірити їх. var_exportза замовчуванням друкує результат, але дозволяє повертати як рядок замість цього за допомогою додаткового$returnпараметра.
array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
)
Особисто я вважаю, що var_exportце найкращий компроміс лаконічного та точного.
var_exportчерез свою природу загине жахлива рекурсивна смерть на ну рекурсивних масивах. print_rі var_dump(хоча, не зовсім впевнений у останньому, оскільки я його зазвичай не використовую) не має цього питання. Так не робіть var_export($_GLOBALS);, наприклад (який містить себе). :)
var_dumpвиходу. Шкода, що він не дозволяє повернути висновок у вигляді рядка. Як такий, я можу сказати про почуття @ iconoclast у коментарі вище. Але доводиться вибирати var_exportбільш var_dumpдля цього випадку використання є прийнятним для мене. Для повноти зверніть увагу на цей відповідний запит на функцію .
var_dumpі var_exportстосуватися так (із посібника )
var_export () отримує структуровану інформацію про дану змінну. Він схожий на var_dump () з одним винятком: повернене представлення є дійсним PHP-кодом.
Вони відрізняються від print_rцього var_dumpекспорту додаткової інформації, як тип даних і розмір елементів.