【问题标题】:What is the alternative of using several elseif nested loops in PHP [closed]在 PHP 中使用几个 elseif 嵌套循环的替代方法是什么 [关闭]
【发布时间】:2015-07-03 04:03:07
【问题描述】:

在 PHP 中使用多个(在我的情况下为 23 个)if-elseif 嵌套循环的最佳选择是什么?

【问题讨论】:

  • 你为什么不展示你有什么?有时,只需更改一点逻辑,您就可以跳过一两个模式,并且没有 23 个案例。通常情况下,开发人员会做一堆不必要的重复。
  • 如果你在 if-elseif 链中设置相同的变量,那么你可以使用 hashmap 来映射关系或使用三元运算符。您需要发布您的脚本,以便我们确定最佳优化路线。
  • 这真的取决于你在这些条款中的条件;切换是可能的,但并不总是正确的选择。我们需要查看有问题的代码。
  • 顺便说一句,if - elseif 没有嵌套,它是一个结构

标签: php if-statement switch-statement


【解决方案1】:

如果您关心性能if 语句使用 check 后跟 jump 到下一个子句,如@987654323 @先加载value,比较和遍历value表找到匹配,大多数情况下比较快。

对于可读性,我认为switch 在您有两个以上条件时会更好。

但主要还是要看使用环境。

如果您对选择哪个有疑问

  • 当您有一个易于阅读的表达式时,请选择 switches 生成多个结果,然后您必须执行基于逻辑的 之上。

  • 如果您的表达式不相关,则只产生布尔条件, 或变得复杂/相关(如if a then b、if c then b、if d then a 有时 b),然后坚持使用 ifs。 (如here所说)

【讨论】:

  • switch 语句的行为与 if-elseif 链没有区别;它们实际上是同一件事,只要 case(s) 有 break 语句。
  • @Ja͢ck 我猜在 PHP 中是的,但它们在 Java 和 C 中的行为不同。
【解决方案2】:

switch 语句会执行此操作。 http://php.net/manual/en/control-structures.switch.php

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2022-12-31
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多