【问题标题】:What is the difference between print_r and echo when providing results to an AJAX call?向 AJAX 调用提供结果时,print_r 和 echo 有什么区别?
【发布时间】:2017-11-07 22:23:15
【问题描述】:

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

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

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

【问题讨论】:

  • print 和 echo 或多或少是同义词 - 它们只是输出一个字符串,而 print_r 将允许您打印出一个数组/对象/其他,以便在调试时提供视觉线索
  • 如果您的 AJAX 需要 json(常见),使用 print_r 肯定会破坏您的输出。
  • @Randall 所以,是的,返回的内容有区别吗?这是因为,正如链接的答案所述,echo 可以处理多个字符串,而 print_r 仅限于一个?

标签: php jquery ajax echo


【解决方案1】:

PHP 中最常见的内置输出函数有:echoprintprintfprint_rvar_dumpvar_export。它们都旨在输出数据,尽管方式略有不同。这就是为什么每个函数都有特定的用例。

  • echo:最臭名昭著的。您应该使用它来将数据输出到 AJAX 调用者。它简单有效。它实际上是一种语言结构,因此不需要您使用括号。你写echo 'string';或者echo $something;等等就行了

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


  • print:也是一种语言结构,它与 echo 几乎相同,不同之处在于它只接受一个参数并且总是返回相同的东西:1。如果您愿意,可以使用 print 而不是 echo,但是许多流行的 PHP 项目的代码标准要求您不要这样做。因此,print 或多或少成为 PHP 中未使用(或很少使用)的函数。

  • printf:此函数及其兄弟sprintf() 旨在输出格式化字符串。它稍微复杂一些,但确实有特定的用例。例如,这些通常用于将整数输出为二进制数或八进制数,以进行翻译,以及在 PHP.net 上详细记录的许多其他选项 - 这是一个单独的主题。

  • print_rvar_dumpvar_export:这些最常用于调试代码或以一种或另一种方式测试代码。您将很少在生产代码中找到它们的用例。也就是说,这些允许您传入复杂的数据类型,例如整个数组,并以递归方式 print_r 转储整个数组以供分析。 var_dump 做了几乎相同的事情,但使用了一种稍微不同的方法,这种方法有时很有用。 var_export 具有输出可解析字符串的优势。

    print_rvar_export 都支持可以“返回”正常输出值的参数,这是一个方便的功能。 var_dump 无法做到的事情。

【讨论】:

  • 我承认我没有直接问为什么 echo 是更好的选择(假设是),我很感激你提到它。为什么 echo 是我们应该使用的更多原因? @Randall 提到 print_r 乱码输出,但如果我理解 echo,它实际上只对最简单的返回有用吗?
  • 非常欢迎。 echo 对于您将在 PHP 中执行的几乎所有输出都很有用。如果你正在输出一些东西,而你使用echo,你将有一个很好的理由这样做,这将是一个特例;例如,您将使用 printf()echo sprintf() 来做一些特别的事情。在所有其他情况下,最好使用echo 输出。或者,您可以这样想:“格式”通常由您的脚本处理。到了输出的时候,你echo。该格式已在其他地方建立。
  • 如果echo 函数被命名为output,它可能不会那么混乱,因为它all就是这样做的。而已。它只是输出已经格式化的东西。与print 相同。
  • 我不会说print_r 乱码输出,我会说它输出用于分析的数据,这对用户来说可能看起来像gobbly-goop。但是,它采用特定格式,主要供开发人员使用。 var_dumpvar_export 也是如此。
猜你喜欢
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2021-01-31
  • 2020-04-25
  • 2013-08-09
  • 1970-01-01
  • 2022-12-13
相关资源
最近更新 更多