从数组中提取值,然后在值上运行

时间:2016-08-25 20:00:50

标签: php arrays if-statement

我有一系列项目(奶酪),复选框格式如此

array(
    'type' => 'checkbox',
    "holder" => "div",
    "class" => "",
    "heading" => __("Choose your cheese topping", 'rbm_menu_item'),
    'param_name' => 'cheesbox',
    'value' => array( 'Cheddar'=>'Chedder', 'Gouda'=>' Gouda', 'Bleu'=>' Bleu'),
    "description" => __("<br /><hr class='gduo'>", 'rbm_menu_item')
    ),

数组的值显示在页面上(在隐藏的div中)使用heredoc声明,if用于检查复选框是否已被使用 - 如果返回为空则div不显示 - 如果其中一个复选框被“检查”然后它会。

///Cheese selections
if (!empty($cheesbox)) {
      $output .= <<< OUTPUT
        <br />
        <div class="sides">Comes with: <p>{$cheesebox}</p></div>
        <br />
OUTPUT4;
}

我需要做的是拉出数组中的任何一个值,如果它在$ cheesebox中做了什么。

我尝试过像这样的ifelse

if ( ('$cheesebox') == "Cheddar" ){
           echo "Your topping is Cheddar";
        }
            elseif ( ('$cheesebox') == "Gouda" ){
        {
           echo "Your topping is Gouda";
        }
            elseif ( ('$cheesebox') == "Bleu" ){
        {
           echo "Your topping is Bleu";
        } 

然而这不起作用 - 我确定我在某条线上有错误或者heredoc功能只允许一个吗?

若有,有办法实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

PHP中的单引号表示没有解析变量的文字字符串。试试这个:

  if ($cheesebox == "Cheddar") {
       echo "Your topping is Cheddar";
  } else if ($cheesebox == "Gouda") {
       echo "Your topping is Gouda";
  }  else if ($cheesebox == "Bleu") {
       echo "Your topping is Bleu";
  }

更好的是:

 if (in_array($cheesebox, ['Cheddar', 'Gouda', 'Bleu'])) {
     echo "Your topping is {$cheesebox}";
 }

编辑:回应您在评论中的进一步要求:

在你的PHP中:

$cheeses = ['Cheddar', 'Gouda', 'Bleu'];
$cheeseBoxes = '';
foreach ($cheeses as $cheese) {
    $cheeseClass = $cheesebox == $cheese ? '' : 'cheese-hidden';
    $cheeseBoxes .= <<<CHEESE
    <div class="cheese {$cheeseClass}">
       <p>Cheese: {$cheese}</p>
       <img src="/images/cheeses/{$cheese}.png" alt="A picture of some {$cheese}" />
    </div>
CHEESE;
}

// Then, wherever you need it, or just use $cheeseBoxes in your chosen heredoc:
echo $cheeseBoxes;

在CSS中,隐藏不活动的:

.cheese.cheese-hidden {
    display: none;
}