PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了是否存在速记切换语句(在PHP中)?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想将相同的变量(或表达式)与许多不同的值进行比较,并根据它所等的值返回不同的值.我希望这样做inline or shorthand,if语句可能会这样做.

请参阅以下switch声明:

switch($color_name) {
    case 'red':
    case 'blue':
        $color_type = handlePrimaryColor($in);
        break;
    case 'yellow':
    case 'cyan':
        $color_type = handleSecondaryColor($in);
        break;
    case 'azure':
    case 'violet':
        $color_type = handleTertiaryColor($in);
        break;
    default:
        $color_type = null;
        break;
}

我不喜欢在每种情况下编写$color_type =并希望用更少的代码找到一种方法来做到这一点.

我可以用某种形式的速记语法来做到这一点.下面,我使用shorthand if statement为变量首先被声明的位置赋值:

$color_type = $color_name == 'red' || $color_name == 'blue'
    ? handlePrimaryColor($color_name)
    : ($color_name == 'yellow' || $color_name == 'cyan'
        ? handleSecondaryColor($color_name)
        : ($color_name == 'azure' || $color_name == 'violet'
            ? handleTertiaryColor($color_name)
            : null
        )
    );

方法不需要在每个构造中声明变量,而是给我2个新问题:

>我现在必须为每种颜色写一个新的OR条件
>每组条件都增加了额外的嵌套水平

我的问题:是否有一种方法允许我使用行为类似于开关的简写语法直接为变量赋值?

如果没有,我会有兴趣了解为什么存在这种限制.

解决方法:

太多的工作.使用调度表.

$color_dispatch = Array(
  'red' => 'handlePrimaryColor',
  'blue' => 'handlePrimaryColor',
   ...
);

$color_type = null;
if (array_key_exists($color_name, $color_dispatch))
{
  $color_type = $color_dispatch[$color_name]($in);
}

大佬总结

以上是大佬教程为你收集整理的是否存在速记切换语句(在PHP中)?全部内容,希望文章能够帮你解决是否存在速记切换语句(在PHP中)?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: