-3

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

case '!pie':
sendMsg("Pie is great");
break;
case '!call':
sendMsg(call_switch($usersmg)); //call whatever the user said
break;

我不想手动添加,我希望用户也能够自己调用其他命令。

这可能吗?

4

3 回答 3

1

那这个呢:

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

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

switch ($args[0]) {
  case '!pie':
    ....
    break;
}
于 2012-08-19T00:18:45.320 回答
1

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

switch(something) {
    case '!pie':
    case '!call':
        sendMsg("Pie is great");
        break;
}

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

于 2012-08-19T00:17:53.947 回答
0

不,你不能调用一些东西,除非它是一个函数。当出现您希望可以调用另一种情况的情况时,解决方案通常是函数表。代替大的 switch() 语句,您有一个指向函数名称的数组,其中以 case 作为键。

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

于 2012-08-19T00:40:24.790 回答