1. ホーム
  2. php

Switch Caseとif else if、どちらが高速で優れているか?

2023-09-03 02:49:15

質問

ifとswitchのどちらがより良い、速い方法でしょうか?

if(x==1){
  echo "hi";
} else if (x==2){
  echo "bye";
}

switch(x){
  case 1
    ...
  break;
  default;
} 

どのように解決するのですか?

最初の例は単純に間違っています。必要なのは elseif ではなく、単に else .

もしあなたが if..elseif... または switch は、主に好みの問題です。性能は同じです。

しかし、もしすべての条件が x == value で、かつ x はどの条件でも同じである。 switch は通常意味をなします。また、私は switch を使うようにします。

というケースは switch が実際にパフォーマンス上の利点をもたらすのは、変数の部分が関数呼び出しである場合です。

switch(some_func()) {
    case 1: ... break;
    case 2: ... break;
}

次に some_func() は一度だけ呼ばれますが

if(some_func() == 1) {}
elseif(some_func() == 2) {}

を使うと、関数が二度呼び出されることになります。しかし、あなたはいつでも $res = some_func(); を使ってから $res の中に if という条件を追加することで、この問題を完全に回避することができます。

あなたが できない が全く使えないのは、より複雑な条件がある場合です。 switch のみが動作します。 x == yy は一定値です。