使用 ACF 中复选框字段的多个值切换大小写

Switch case with multiple values from a checkbox field in ACF

我有一个包含 5 个值的高级自定义字段 复选框。用户最多可以检查两个值。 现在我想根据输入显示图像。我想在 PHP 中使用 switch case,但无法正常工作。我想要这样的东西

如果值 = A 则显示图像 a.jpg
如果值 = B 则显示图像 b.jpg
如果值 = C 则显示图像 c.jpg
如果值 = D 则显示图像 d.jpg
如果值 = E 则显示图像 e.jpg
如果值 = A and B 则显示图像 a-b.jpg
如果值 = B and C 则显示图像 b-c.jpg
如果值 = B and D 则显示图像 b-d.jpg
等..

我有这样的东西:

<?php
$checkbox = get_field('my_checkbox');

switch($checkbox){

case "A":
        echo "<img src="a.jpg">";
        break;
case "B":
        echo "<img src="b.jpg">";
        break;
case ("A" && "B"):
        echo "<img src="a-b.jpg">";
        break;
case ("B" && "C"):
        echo "<img src="b-c.jpg">";
        break;
 // Default
    default:
        echo "No choice made yet";
        break;
}

但这不起作用。有人能让我走上正轨吗? 谢谢!

Switch Case 结构基本上在第一次匹配时触发。您需要做的是首先识别给出多个答案而不是单个值的情况。您可以使用下面的示例进行扩展。不要忘记在 ACF 复选框上设置条件逻辑,以防止用户选择超过 2 个选项(因为看起来您没有包含超过 2 个值的图像)

<?php
$checkbox = get_field('my_checkbox');
$checkbox = array( $checkbox ); 
if( $checkbox && in_array( array( 'A' , 'B' ), $checkbox) ) {
    $key = "a-b.jpg";
} elseif ( $options && in_array(array('a'), $checkbox) ) {
    $key = "a.jpg";
} elseif ($options && in_array(array('b'), $checkbox) ) {
    $key = "b.jpg";
}
?>