用php调用一个case

用php调用一个case,php,switch-statement,Php,Switch Statement,我有一个用于聊天的自动机器人脚本,我使用switch()切换到命令。可以这样调用一个命令吗 case '!pie': sendMsg("Pie is great"); break; case '!call': sendMsg(call_switch($usersmg)); //call whatever the user said break; 我不想手动添加,我希望用户能够自己调用其他命令 这可能吗?多个案例可以通过让它“失败”来做同样的事情: 或者,您可以在切换之前查看命令是否为“!cal

我有一个用于聊天的自动机器人脚本,我使用switch()切换到命令。可以这样调用一个命令吗

case '!pie':
sendMsg("Pie is great");
break;
case '!call':
sendMsg(call_switch($usersmg)); //call whatever the user said
break;
我不想手动添加,我希望用户能够自己调用其他命令


这可能吗?

多个案例可以通过让它“失败”来做同样的事情:

或者,您可以在切换之前查看命令是否为“!call”,并在到达切换之前根据需要更改命令。

如何:

$input = '!call !pie';
$args = explode(' ', $input);

if ($args[0] == '!call' && count($args) > 1)
   array_shift($args);

switch ($args[0]) {
  case '!pie':
    ....
    break;
}

不,除非它是函数,否则不能调用它。当出现希望调用另一个案例的情况时,解决方案通常是函数表。不是一个大的switch()语句,而是一个数组,指向以case作为键的函数名


顺便说一句,这是PHP本身所经历的变化。在PHP4中,VM使用一个巨大的switch语句来处理操作码。在PHP5中,改为使用函数表。调用函数会产生堆栈框架构造的成本。不过,增加的灵活性通常可以弥补这一缺陷。

他不想要
!呼叫==!pie
,他希望能够动态调用任何case语句。(我不知道为什么)。@Martin:根据OP目前的提问,这个答案非常合适。如果OP想要别的东西,他们需要以更好的方式问。不值得-1anyway@zerkmsOP给出了一个简化的问题,其中只有一个例子。我认为这是一个很清楚的问题,但也许我misunderstood@Martin:OP给出了一些奇怪的例子,没有用一些奇怪的术语解释任何特殊的事情。所以我甚至不想再问另一个问题了,这通常是个糟糕的问题,所以不要费心去弄清楚OP在想什么。根据问题的当前形式,有数百万个正确答案和错误答案。您可以在“”中添加另一个switch语句!打电话给凯斯,这很有效。谢谢你是这里唯一明白的人!这么多问题,老实说,我觉得问题很清楚。。。虽然我不明白为什么用户不能直接输入!自己馅饼,而不是!呼叫馅饼点击“接受”按钮,如果它对您有帮助:)
$input = '!call !pie';
$args = explode(' ', $input);

if ($args[0] == '!call' && count($args) > 1)
   array_shift($args);

switch ($args[0]) {
  case '!pie':
    ....
    break;
}