在为AJAX调用提供结果时,print_r和echo之间有什么区别?

时间:2017-11-07 22:23:15

标签: php jquery ajax echo

虽然我已经找到一些关于PHP中的echo和print_r()之间的一般差异的讨论(例如,What's the difference between echo, print, and print_r in PHP?),但我遇到的所有AJAX调用的教程和答案都说PHP应该 echo 结果,然后死掉。

在一个返回简单字符串的实验中,当使用console.log显示时,我发现两者之间没有任何区别。

使用echo vs print_r时,返回到AJAX调用的内容是否有任何显着差异。并不是说我看到使用echo有什么问题,但是当我在函数中使用print_r进行调试时,我确实得到了意想不到的结果。

1 个答案:

答案 0 :(得分:3)

PHP中最常见的内置输出函数有:echoprintprintfprint_rvar_dump和{{3} }。它们都旨在输出数据,尽管方式略有不同。这就是为什么有与每个功能相关的特定用例的原因。

  • 回声:最臭名昭着的。这是您应该用于将数据输出到AJAX调用者的内容。它简单有效。它实际上是一种语言结构,所以它并不要求你使用括号。您只需撰写echo 'string';echo $something;

    即可

    它还支持多个以逗号分隔的值,使其在各种用例中都很方便;例如,echo 'string1', 'string2', 'string3';。请注意, echo 会返回null(无)。

  • 打印:也是一种语言结构,它与 echo 几乎相同,不同之处在于它只接受一个参数并始终返回相同的事情:1。如果您愿意,可以使用打印而不是 echo ,但许多流行的PHP项目都有代码标准,要求您不要这样做。因此, print 或多或少地变成了PHP中未使用的(或很少使用)功能。
  • printf :此函数及其兄弟var_export旨在输出格式化字符串。它稍微复杂一些,但确实有特定的用例。例如,这些通常用于输出整数作为二进制数或八进制数,用于翻译,以及PHP.net中详细记录的许多其他选项 - 这是一个单独的主题。
  • print_r var_dump var_export :这些在调试代码或以某种方式测试代码时最常用。您将很少在生产代码中找到它们的用例。也就是说,这些允许您传递复杂数据类型(如整个数组)和 print_r 递归,以转储整个数组进行分析。 var_dump 几乎完全相同,但使用的方法略有不同,有时可能会有用。 var_export 具有输出可解析字符串的优势。

    print_r var_export 都支持可以返回'的参数。它通常会输出的值,这可能是一个方便的功能。 var_dump 不具备的功能。