-3

チャット用の自動ボット スクリプトがあり、コマンドへの切り替えには switch() を使用します。このようなコマンドの 1 つを呼び出すことは可能ですか。

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

手動で追加したくありません。ユーザーが他のコマンドを自分で呼び出すこともできるようにしたいのです。

これは可能ですか?

4

3 に答える 3

1

複数のケースで「フォールスルー」させることで、同じことを行うことができます。

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

または、スイッチの前にコマンドが「!call」であるかどうかを確認し、スイッチに到達する前に必要に応じてコマンドを変更することもできます。

于 2012-08-19T00:17:53.947 に答える
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 に答える
0

いいえ、それが関数でない限り、何かを呼び出すことはできません。別のケースを呼び出したい状況が発生した場合、解決策は通常関数テーブルです。大きな switch() ステートメントの代わりに、ケースをキーとして関数名を指す配列があります。

ちなみに、それは PHP 自体が受けた変更です。PHP 4 では、VM は巨大な switch ステートメントを使用してオペコードを処理します。PHP 5 では、代わりに関数テーブルが使用されます。関数を呼び出すと、スタック フレームの構築にコストがかかります。ただし、追加された柔軟性により、多くの場合それが補われます。

于 2012-08-19T00:40:24.790 に答える