条件付き数式
条件付き数式を使用すると、リーグテーブルカラムと選手統計のフォーミュラに比較ロジックを含めることができます。純粋な算術式の代わりに、比較に基づいて 1(真)または 0(偽)に評価されるサブ式を含むフォーミュラを記述し、その結果をより大きな計算に乗算できます。
この機能は、コアの SportsPress プラグインに includes/sportspress/modules/sportspress-conditional-equations.php として同梱された条件付き数式モジュールによって提供されます。
比較演算子
条件付き数式モジュールが有効な場合、以下の演算子が演算子の下の数式ビルダーパレットに追加されます。
ボタン | 意味 |
| より大きい |
| より小さい |
| 等しい |
| 等しくない |
| 以上 |
| 以下 |
これらの演算子は、テーブルカラムと選手統計の数式ビルダーで利用できます。
評価の仕組み
括弧内の条件サブ式は、1(条件が真)または 0(条件が偽)のどちらかに評価されます。
一般的なパターンは以下の通りです。
( 左オペランド 演算子 右オペランド ) * 真の場合の値
真の条件が 1 を返し、偽の条件が 0 を返すため、条件を乗算すると if/then のゲートとして機能します。条件が真の場合は値が含まれ、偽の場合はゼロになります。
if/then/else 構造を表現するには、2 つの条件式を組み合わせます。
( 条件 ) * 真の場合の値 + ( 否定条件 ) * 偽の場合の値
または、2 つの分岐が相互に排他的であるため、よりシンプルに:
( 条件 ) * 真の場合の値 + ( 1 - ( 条件 ) ) * 偽の場合の値
例
値を最大値でキャップする
得失点差が 10 を超えても追加点が加算されないように、勝利に最大 3 ポイントを与える場合:
$win * 3 + ( ($goalsfor - $goalsagainst) > 10 ) * 0
よりシンプルなキャップの例 — 得失点差を最大 10 に制限する:
( ($goalsfor - $goalsagainst) > 10 ) * 10 + ( ($goalsfor - $goalsagainst) <= 10 ) * ($goalsfor - $goalsagainst)
$goalsfor - $goalsagainst が 10 より大きい場合、最初の分岐が 10 を返します。10 以下の場合、2 番目の分岐が実際の差を返します。
ハンディキャップスコアリング
得点が失点を 2 より多く超えた場合にボーナスポイントを追加する:
$win * 3 + ( ($goalsfor - $goalsagainst) > 2 ) * 1
( ($goalsfor - $goalsagainst) > 2 ) サブ式は条件を満たすと 1 に、そうでなければ 0 に評価されます。1 を乗算すると、その場合にのみボーナスポイントが追加されます。
条件付きで値をゼロにする
得失点差が正の場合のみ表示し(そうでない場合は 0 を表示する):
( ($goalsfor - $goalsagainst) > 0 ) * ($goalsfor - $goalsagainst)
ネストされた条件
条件はより大きな式の中にネストできます。数式エンジンは最も内側の括弧から評価します。条件式を外側の括弧で囲んで他の演算子と組み合わせることができます。
例:
( ( $goalsfor > $goalsagainst ) * 3 ) + ( ( $goalsfor == $goalsagainst ) * 1 )
これは得点が失点を超える場合に 3 ポイント、同等の場合に 1 ポイント、それ以外は 0 ポイントを付与します。
通常の数式と条件付き数式の使い分け
計算が常に同じフォーミュラである場合(値に関係なく)は通常の算術式を使用します(例:$win * 3 + $draw * 1)。
値がどの範囲に属するかによって結果が異なる場合、値をキャップまたはフロアしたい場合、特定の条件のみで適用されるボーナスやペナルティを含めたい場合は条件付き数式を使用します。
シンプルな勝ち/負け/引き分けのポイント割り当てには条件付き数式を使用しないでください。標準的なアプローチは条件なしで $win * 3 + $draw * 1 を使用することです。条件式は、ポイント値または表示値が結果の大きさに基づいて変化する場合に使用します。
ビルダーで条件付き数式を構築する
テーブルカラムまたは選手統計の編集画面を開きます。
数式 メタボックスでパレットの演算子行にある
(をクリックして括弧グループを開きます。左オペランド変数を追加します(例:「得点 (for)」のような結果トークンをクリック)。
-演算子と別の変数をクリックして差を作ります。比較演算子をクリックします(例:より大きいの場合
>)。定数をクリックします(例:
10)。)をクリックして括弧グループを閉じます。*をクリックし、条件が真の場合に乗算する値をクリックします。必要に応じて
+と偽の場合のフォールバック式を追加します。公開 または 更新 をクリックして保存します。
保存された数式は ( $goalsfor - $goalsagainst > 10 ) * 10 のようなスペース区切りの文字列です。必要に応じて sp_equation 投稿メタ値を読み取ることで直接確認または編集できます。
