/ / PHP - リファクタリング/ Ifの改善 - php、リファクタリング

リファクタリング/改善Ifs - PHP、リファクタリング

次のようなデータ構造があります。

Array ( [0] => Array ([suit] => c [rank] => A )
[1] => Array ( [suit] => d [rank] => A ) )

これらのカードが特定の値であるかどうかをテストし、適切なメッセージを表示します。

if (
(($hand[0]["rank"] == "A") && ($hand[1]["rank"] == "A"))
|| (($hand[0]["rank"] == "K") && ($hand[1]["rank"] == "K"))
|| (($hand[0]["rank"] == "Q") && ($hand[1]["rank"] == "Q"))
|| (($hand[0]["rank"] == "A") && ($hand[1]["rank"] == "K"))
|| (($hand[0]["rank"] == "K") && ($hand[1]["rank"] == "A"))
) {
echo "Action: Raise pre-flop. Re-raise if already raised.<br />n";
}

if (
(($hand[0]["rank"] == "7") && ($hand[1]["rank"] == "7"))
|| (($hand[0]["rank"] == "A") && ($hand[1]["rank"] == "J") && ($hand[0]["suit"] == $hand[1]["suit"]))
|| (($hand[0]["rank"] == "J") && ($hand[1]["rank"] == "Q") && ($hand[0]["suit"] == $hand[1]["suit"]))
|| (($hand[0]["rank"] == "10") && ($hand[1]["rank"] == "J") && ($hand[0]["suit"] == $hand[1]["suit"]))
) {
echo "Action: Worth a call pre-flop (provided no-one has raised).<br />n";
}

私はいくつかの条件を取り除くことによってIFを単純化しました。

誰もこれを行うためのより良い方法を提案することはできますか?

回答:

回答№1は0

多分in_array()メソッドを試してみてください

php.net in_array()


回答№2の場合は0

このような参照を使用してみてください。

$rank0 =& $hand[0]["rank"];
$rank1 =& $hand[1]["rank"];

if (
($rank0 == "A" && $rank1 == "A")
|| (...)

コード最小化の第一歩として