【问题标题】:If-Condition: Why turning a boolean into an integer?如果条件:为什么将布尔值转换为整数?
【发布时间】:2015-05-19 13:11:31
【问题描述】:

我看到了这样的情况:

if ((int)method_exists($this, $this->endpoint) > 0)

这背后是什么?比显而易见的优势是什么

if (method_exists($this, $this->endpoint))

?

(来源:http://coreymaynard.com/blog/creating-a-restful-api-with-php/

【问题讨论】:

  • 看不出有什么优势,第一个比第二个慢
  • 您可以出于某些原因强制类型返回(强制类型转换),例如,如果您想确保对两个元素的比较使用相同的类型进行评估......但除此之外我认为在这种情况下,代码没有太大的改进,而且可读性更差……我会选择第二个版本。
  • 甚至完全没用,因为当您将其转换为整数时,如果 method_exists 返回 true 或 0,如果它返回 false 然后您测试它是否大于 0 表示不同为false,即等于true,而不是自动返回将method_exists它自己。

标签: php if-statement conditional-statements


【解决方案1】:

我看不出将它转换为整数有什么好处。因为 method_exists 已经返回一个布尔值。这是一种漫长而无用的编码方式。

如果语句需要一个布尔值,而method_exists返回一个布尔值,则添加的过程与直接使用method_exists的结果完全相同(但浪费时间和cpu,所以请不要这样做:D)

【讨论】:

  • 这些也是我的想法(除了不确定资源使用的增加)。我仍然想知道,动机是什么——因为它是由专业人士编写的,而且肯定有一些原因。也许只是口味问题。另一种语言的习惯?好吧,我现在只是亲自写信问他;)谢谢
  • 这可能是另一种语言的习惯。它实际上增加了资源的使用(不是很多,但是使用一勺半糖而不是一勺是增加了资源的使用,即使它很小),因为他要求 cpu 再做两次操作(转换为整数, test) 在 if 语句之前。问他,请在这里给出他的答案,这可能对我们所有人都有帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2011-12-10
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
相关资源
最近更新 更多