我有一个用于聊天的自动机器人脚本,我使用 switch() 切换到命令。是否可以调用这样的命令之一;
case '!pie':
sendMsg("Pie is great");
break;
case '!call':
sendMsg(call_switch($usersmg)); //call whatever the user said
break;
我不想手动添加,我希望用户也能够自己调用其他命令。
这可能吗?
我有一个用于聊天的自动机器人脚本,我使用 switch() 切换到命令。是否可以调用这样的命令之一;
case '!pie':
sendMsg("Pie is great");
break;
case '!call':
sendMsg(call_switch($usersmg)); //call whatever the user said
break;
我不想手动添加,我希望用户也能够自己调用其他命令。
这可能吗?
那这个呢:
$input = '!call !pie';
$args = explode(' ', $input);
if ($args[0] == '!call' && count($args) > 1)
array_shift($args);
switch ($args[0]) {
case '!pie':
....
break;
}
多个案例可以通过让它“失败”来做同样的事情:
switch(something) {
case '!pie':
case '!call':
sendMsg("Pie is great");
break;
}
或者,您可以在切换之前查看命令是否为“!call”,并在到达切换之前根据需要更改命令。
不,你不能调用一些东西,除非它是一个函数。当出现您希望可以调用另一种情况的情况时,解决方案通常是函数表。代替大的 switch() 语句,您有一个指向函数名称的数组,其中以 case 作为键。
顺便说一句,这是 PHP 本身所经历的变化。在 PHP 4 中,VM 使用一个巨大的 switch 语句来处理操作码。在 PHP 5 中,改为使用函数表。调用函数会产生堆栈帧构造的成本。不过,增加的灵活性通常可以弥补这一点。