在echo返回字符串上,在print_r上返回PHP中的数组或对象

时间:2015-07-13 05:35:29

标签: php arrays string object echo

我使用的一些函数在echo上返回一个字符串,就像这样。

echo my_function();

这会在屏幕上打印“hello”。

print_r( my_function() );

这会在屏幕上打印一个数组或一个对象。在这两种情况下,功能都是相同的,甚至可以在参数中使用。

这是怎么做到的?

可能的功能

function my_function() {
    // If this function is used by echo return the string
    // If this function is used by print_r return an array

    $string = 'Hello';
    $array = array('some', 'data');

    // return $string or $array depending on
}

现实生活中的例子

此函数返回echo上的图像和print_r上的对象:http://getkirby.com/docs/cheatsheet/helpers/thumb

2 个答案:

答案 0 :(得分:0)

功能不应该取决于他们打电话给谁,而是取决于他们的召唤方式。

例如,创建一个在打印时对回显和减法进行添加的函数是没有意义的。这令人困惑。

尝试使用问题评论中建议的参数。

答案 1 :(得分:0)

您的my_function()没有返回任何内容。因此,在echoprint_r中调用它不会造成任何差异。如果return string形成了该功能,并且您只想显示该功能,那么您可以echo将其显示出来。但是,如果您return array来自函数echo,那么它将为您提供不可用的输出。另一方面,如果你print_r函数和函数返回字符串,那么它将像echo do一样输出。但是,如果您返回数组并使用print_r进行调用,则会显示array更多可读。它对调试很有用。

以下是 echo print_r()

的更多信息

<强>回声

  1. 输出一个或多个以逗号分隔的字符串
  2. 没有返回值
  3. <强>的print_r()

    1. 输出任何一个值的人类可读表示
    2. 不仅接受字符串,还接受包括数组和对象在内的其他类型,将其格式化为可读
    3. 调试时有用
    4. 如果给出第二个可选参数
    5. ,则可以将其输出作为返回值(而不是回显)返回