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