3

そのため、他のさまざまな関数を処理する関数があり、switchステートメントを使用してこれらの関数をcasesandで処理しbreaksます。

それはすべて正常に動作します。arrayこれをwithに変更することは可能でしょうkeysか?

これがコードです

switch ($intMultiFun) {
    case "a":
        handle a function
        break;
    case "b":
        handle a function
        break;
    case "c":
        handle a function
        break;
    case "d":
        handle a function
        break;
}
4

3 に答える 3

3

あなたが探しているのはin_array()、次のようです:

if(in_array($intMultiFun, ['a', 'b', 'c', 'd']))
{
   //handle a function
}

-short arrays 構文は PHP>=5.4 で導入されたので、それ以前のバージョンでは

if(in_array($intMultiFun, array('a', 'b', 'c', 'd')))
{
   //handle a function
}

編集

関数が異なる場合は、次のように配列に保持する必要があります。

$rgFunctions = ['a'=>'funcA', 'b'=>'funcB', 'c'=>'funcC', 'd'=>'funcD'];
if(array_key_exists($intMultiFun, $rgFunctions) &&
   function_exists($rgFunctions[$intMultiFun]))
{
   $mResult = call_user_func($rgFunctions[$intMultiFun]);
}
于 2013-10-01T14:46:12.940 に答える
1

キーごとに異なる関数を呼び出したい場合:

$funcs = array(
    'a' => 'a_function', 
    'b' => 'b_function', 
    'c' => 'c_function', 
    'd' => 'd_function');

$funcs['a'](); // calls a_function
于 2013-10-01T14:48:15.930 に答える