在变量中执行if语句


Performing an if statement in a variable

我想要一个包含if语句的变量,在WordPress中这样做,但似乎不能让它工作。

下面是我的代码:
<?php $priceperpost= {
   if ( $linecount > 15) 
{ 
   echo "109";
}
elseif ($linecount > 30) {
   echo "89";
}
elseif ($linecount > 100) {
   echo "Please Call";
}
else {
   echo "129";
}  
}
?>

下面是如何使用一行if语句的示例;你必须嵌套它们才能得到你想要的效果。基本上在这段代码中,如果x等于1,那么$value被赋值为2。否则它的值为3。

$x = 1;
$value = ($x == 1 ? 2 : 3);
echo $value;

输出:2

相当于:

$x = 1;
if ($x == 1) {
    $value = 2;
} else {
    $value = 3;
}
echo $value;

假设您正在尝试分配该值而不是直接输出到屏幕上:

<?php
  $priceperpost = "129"; // default
  if ($linecount > 100) {
    $priceperpost = "Please call"; // highest price break value first
  } elseif ($linecount > 30) {
    $priceperpost = "89";
  } elseif ($linecount > 15) {
    $priceperpost = "109"; // lowest price break value last
  }
 ?>

或者更紧凑和灵活的东西-您可以将值存储在文件或数据库中,并从该数据生成数组,而不必为新的价格分隔值编写新的elseif:

<?php
  $priceArray = array( // insert price break values in descending order
    100 => "Please call",
    30 => "89",
    15 => "109",
    0 => "129",
  );
  foreach ($priceArray as $breakValue => $price) {
    if ($linecount > $breakValue) {
      $priceperpost = $price;
      break; // found the price break, so we can exit the loop here
    }
  }
?>

我会这样做,因为如前所述,在您提供的示例中,只有您的第一个ifelse会被击中:

switch (true) {
    case $linecount > 100:
        $priceperpost = "Please Call";
        break;
    case $linecount > 30:
        $priceperpost = 89;
        break;
    case $linecount > 15:
        $priceperpost = 109;
        break;  
    default:
        $priceperpost = 129;
        break;
}

一般来说,当有更多的elseif时,它往往会变得有点难以阅读。在这些情况下,为了可读性,我通常更喜欢使用switch语句(但是关于这一点的意见似乎不同)。

演示:http://codepad.viper - 7. - com/unztit