转换if/else为WordPress PHP的大小写开关[已关闭]

ltqd579y  于 2023-01-16  发布在  PHP
关注(0)|答案(3)|浏览(170)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

3天前关闭。
截至3天前,社区正在审查是否重新讨论此问题。
Improve this question
我有一个基于用户ID的WordPress的if/else,但这最终会有100个部分,我被告知CASE有这么多选项更好。那么我如何使这个CASE而不是IF/ELSE?

function my_shortcode_function() {
  $current_user_id = get_current_user_id();
   if ($current_user_id == 5)
    return 'message for user 5 goes here';
   else if ($current_user_id == 6)
    return 'message for user 6 goes here';
   else if ($current_user_id == 7)
    return 'message for user 7 goes here';
   else
    return 'you do not have access to this page.'
}
xv8emn3q

xv8emn3q1#

可以将if/else语句转换为switch语句,如下所示:

function my_shortcode_function() {
   $current_user_id = get_current_user_id();
   switch ($current_user_id) {
     case 5:
       return 'message for user 5 goes here';
     case 6:
       return 'message for user 6 goes here';
     case 7:
       return 'message for user 7 goes here';
     default:
       return 'you do not have access to this page.';
   }
 }

switch语句接受一个表达式(在本例中为$current_user_id),并将其与每个case语句进行比较。如果找到匹配项,则执行该case语句后面的代码。如果找不到匹配项,则执行default语句后面的代码。
break语句是不必要的,因为return语句将停止函数的执行。
您可以添加任意数量的case语句,而且随着条件数量的增加,这将变得更加易读。

bq3bfh9z

bq3bfh9z2#

看看你的问题,看起来不同的用户会有不同的消息,你说可能会有100种情况,你可能会继续这样做,这肯定比if/ switch的情况更好,更容易维护。

function my_shortcode_function() {
  $current_user_id = get_current_user_id();
  // Declare an Associative Array with the userId as key and message as value
  $user_message_array = [ 5 => "Message for user 5 goes here", 6 => "Message for user 6 goes here", 7 => "Message for user 7 goes here" ];
  // Check if your array key has userId, then print message else print fallback message
  return (array_key_exists($current_user_id, $user_message_array)) ? $user_message_array[$current_user_id] : "you do not have access to this page";
}
eeq64g8w

eeq64g8w3#

虽然您要求使用switch,但我只想显示一些附加选项,例如match和一个数组,但是,由于您有这么多项,因此最好将其存储在数据库中。

#1 -匹配

PHP 8增加了match表达式,这大大减少了switch语句的样板:

function my_shortcode_function()
{
    return match (get_current_user_id()) {
        5 => 'message for user 5 goes here',
        6 => 'message for user 6 goes here',
        7 => 'message for user 7 goes here',
        default => 'you do not have access to this page.',
    };
}

**2a -数组with??**这是一个使用空合并操作符的常见数组,从PHP 7.0开始就可以使用。

function my_shortcode_function()
{
    $userInfo = [
        5 => 'message for user 5 goes here',
        6 => 'message for user 6 goes here',
        7 => 'message for user 7 goes here',
    ];

    return $userInfo[get_current_user_id()] ?? 'you do not have access to this page.';
}

#2b -阵列,带插塞

这是一个带有isset检查的常见数组。如果出于某种原因需要支持旧版本的PHP,这可能是一个不错的选择。

function my_shortcode_function()
{
    $userInfo = [
        5 => 'message for user 5 goes here',
        6 => 'message for user 6 goes here',
        7 => 'message for user 7 goes here',
    ];

    $current_user_id = get_current_user_id();

    if (isset($userInfo[$current_user_id])) {
        return $userInfo[$current_user_id];
    }

    return 'you do not have access to this page.';

}

相关问题