- 已关闭**。此问题需要超过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.'
}
3条答案
按热度按时间xv8emn3q1#
可以将
if
/else
语句转换为switch
语句,如下所示:switch
语句接受一个表达式(在本例中为$current_user_id
),并将其与每个case语句进行比较。如果找到匹配项,则执行该case语句后面的代码。如果找不到匹配项,则执行default语句后面的代码。break
语句是不必要的,因为return语句将停止函数的执行。您可以添加任意数量的case语句,而且随着条件数量的增加,这将变得更加易读。
bq3bfh9z2#
看看你的问题,看起来不同的用户会有不同的消息,你说可能会有100种情况,你可能会继续这样做,这肯定比if/ switch的情况更好,更容易维护。
eeq64g8w3#
虽然您要求使用
switch
,但我只想显示一些附加选项,例如match
和一个数组,但是,由于您有这么多项,因此最好将其存储在数据库中。#1 -匹配
PHP 8增加了
match
表达式,这大大减少了switch
语句的样板:**2a -数组with??**这是一个使用空合并操作符的常见数组,从PHP 7.0开始就可以使用。
#2b -阵列,带插塞
这是一个带有
isset
检查的常见数组。如果出于某种原因需要支持旧版本的PHP,这可能是一个不错的选择。