【问题标题】:PHP readdir() and returning a falsy valuePHP readdir() 并返回一个假值
【发布时间】:2019-10-04 08:46:27
【问题描述】:

根据https://www.php.net/manual/en/function.readdir.php的信息,readdir()函数

可能返回布尔值 FALSE,但也可能返回非布尔值,其计算结果为 FALSE。

因此建议使用=== 进行测试。

这可能是什么非布尔值?在我的测试中,我只能得到一个错误的false,就像在下面的例子中一样:

$dirname='0';   //  misinterpreted
print $dirname==false?'false':'true';

所有其他字符串都被解释为true

是否有任何其他字符串会评估为假?或者是否有其他一些返回结果会被评估为假?

【问题讨论】:

  • 布尔类型的手册列出了所有被认为是假的值:php.net/manual/en/…
  • @04FS 感谢您的参考。这表明唯一需要担心的 名称是0readdir() 是否返回 false 或字符串以外的任何内容?
  • readdir “成功时返回条目名称,失败时返回 FALSE” - 所以它不应该是字符串,除非它实际上是错误的。
  • @04FS 谢谢。您能否将您的 cmets 以答案的形式提出,以便我接受,并结束这个问题?

标签: php boolean readdir


【解决方案1】:

是否有任何其他字符串会评估为假?或者是否有其他返回结果会被评估为假?

布尔类型的手册列出了所有被认为是错误的值,https://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

当转换为布尔值时,以下值被视为 FALSE:

  • 布尔值 FALSE 本身
  • 整数 0 和 -0(零)
  • 浮点数 0.0 和 -0.0(零)
  • 空字符串和字符串“0”
  • 一个元素为零的数组
  • 特殊类型NULL(包括未设置的变量)
  • 从空标签创建的 SimpleXML 对象

还有readdir

[r]成功时返回条目名称,失败时返回 FALSE

- 所以除非你得到错误,否则该值应该始终是一个字符串。 (目录条目始终被视为字符串值,在该级别上不存在“数字”的概念。)

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多