可以回应的变量

时间:2015-04-26 10:03:38

标签: php

我创建了一个函数来知道我是否可以使用有用的输出将变量传递给语言结构echo(例如,数组输出Array,我认为这不是很有用)。 / p>

function echo_able($var) {
    if (is_string($var)) return true;
    if (is_numeric($var)) return true;
    if (is_object($var) && method_exists($var, '__toString')) return true;
    return false;
}

我忘了还有其他类型吗?

因为PHP有​​点乱,我找不到一种方法可以确定可以回显什么类型的变量。

PHP documentation没有列出可以回复的内容。

2 个答案:

答案 0 :(得分:2)

可以回显任何变量。执行此操作时,将使用语言规则将内容转换为字符串。问题不在于你不能回应某些东西,但也许你没有得到你想要的结果。 您只需要注意默认情况下会发生什么类型的转换,如果它是您想要的。

编辑: 看起来除非有__toString方法实现,否则无法将对象转换为字符串。 从手册中,您可以看到行为已更改。

  

值得注意的是,在PHP 5.2.0之前,__toString()方法仅在与echo或print直接组合时才被调用。从PHP 5.2.0开始,它在任何字符串上下文中调用(例如在带有%s修饰符的printf()中),但在其他类型的上下文中不调用(例如,使用%d修饰符)。从PHP 5.2.0开始,将没有__toString()方法的对象转换为字符串会导致E_RECOVERABLE_ERROR。

答案 1 :(得分:1)

您基本上可以使用gettype(),它可以返回以下可能的值:

  • “布尔”
  • “整数”
  • “双重”
  • “的字符串”
  • “阵列”
  • “对象”
  • “资源”
  • “NULL”
  • “未知类型”。

也许您可以根据上述可能的值来考虑switch()语句,例如:

switch(gettype($var)) {
  'boolean':
  'integer':
  // ...
    return true;
  default:
    return false;
}

我不确定您要做什么,但通常您应该使用print_r()var_dump()echo var_export()来打印不可打印的变量。