使用empty()调整带有多个变量的输出

时间:2018-11-19 22:52:30

标签: php if-statement textarea is-empty

我有两个主要的变量,它们由字符串和其他变量组成。我只希望两个主要变量为echo'ed(如果它们组成的所有变量都有数据)。

两个主要变量是$introductioncolortxt

$introduction$finalvehicle3$bodystyle$mileage$hi组成。

$colortxt$model$exterior$interiorspec组成。

如果任何辅助变量为空,我不希望显示主变量。

下面是我创建的似乎无效的代码。我一直在使用empty()

我的PHP:

<?php

 $finalvehicle3 = "Toyota Camry";
 $bodystyle = "sedan";
 $mileage = "30,000";
 $hi = null;
 $model = "Camry";
 $exterior = "red";
 $interiorspec = "black cloth";

 if (empty([$finalvehicle3, $bodystyle, $mileage, $hi]) == true){
  $introduction = "";
  }
 else {
   $introduction = "I am pleased to present this ".$finalvehicle3." ".$bodystyle." with ".$mileage." miles.";
  }

  if (empty([$model, $exterior, $interiorspec]) == true){
   $colortxt = "";
  }
  else {
  $colortxt = "This ".$model." is finished in ".$exterior." with a ".$interiorspec. " interior.";
  }

  echo "<textarea name=''  id='' style='width: 565px;' rows='8' cols='60'>";

    echo  $introduction." ".$colortxt;

  echo "</textarea>";
  echo "<br><br>";



 ?>

在这种情况下,$introduction不应显示为$hi = null

3 个答案:

答案 0 :(得分:1)

澄清(无意脱离其他答案);只有isset()可以接受多个逗号分隔的值,不能接受empty()

手册说明:

empty()上:

  

布尔为空(混合$ var)

isset()

  

bool isset(混合$ var [,混合$ ...])

因此,您需要分开并检查每个值是否为空。

即:

if(empty($var1)) && empty($var2)){}

或根据您要检查的内容使用||(OR)逻辑运算符;如果有一个或全部为空。

注意:

您在这里使用的内容:

if (empty([$finalvehicle3, $bodystyle, $mileage, $hi])  == true)

理论上将是“假阳性”。

如果有的话,您将需要在单独的语句中使用== true

即:

if(empty($var1)) && empty($var2) && $x_var == true){}

但是,由于您要检查是否为真,因此前2个需要!求反运算符。

即:

if(!empty($var1)) && !empty($var2) && $x_var == true){}

答案 1 :(得分:0)

检查两个变量是否都不为空:

if (!empty($introduction) && !empty($colortxt)) {
    echo  $introduction." ".$colortxt;
}

另一方面,虽然编码风格具有个人喜好,但您根据条件将它们设置为空时,在其中设置这些变量似乎很尴尬,但从逻辑上(至少我的逻辑上)是预设它们为空,并添加数据(如果数据存在)

在此处代替您的代码:

if (empty([$finalvehicle3, $bodystyle, $mileage, $hi]) == true){
  $introduction = "";
  }
 else {
   $introduction = "I am pleased to present this ".$finalvehicle3." ".$bodystyle." with ".$mileage." miles.";
  }

  if (empty([$model, $exterior, $interiorspec]) == true){
   $colortxt = "";
  }
  else {
  $colortxt = "This ".$model." is finished in ".$exterior." with a ".$interiorspec. " interior.";
  }

执行以下操作:

$introduction = "";
$colortxt = "";

if (!empty([$finalvehicle3, $bodystyle, $mileage, $hi]) == true) {
  $introduction = "I am pleased to present this ".$finalvehicle3." ".$bodystyle." with ".$mileage." miles.";
}

if (!empty([$model, $exterior, $interiorspec]) == true) {
  $colortxt = "This ".$model." is finished in ".$exterior." with a ".$interiorspec. " interior.";
}

对我来说看起来更干净:)

我也不会创建新的数组来检查多个变量,而是这样做:

if (
    !empty($finalvehicle3)
    && !empty($bodystyle)
    && !empty($mileage
    && !empty($hi)
) {

答案 2 :(得分:0)

我无法empty([$finalvehicle3, $bodystyle, $mileage, $hi])工作。

我可以使用:

if (empty($hi)
     || empty($finalvehicle3)
     || empty($bodystyle) 
     || empty($mileage)){
  $introduction = "";
 }
else {
   $introduction = "I am pleased to present this ".$finalvehicle3." ".$bodystyle." 
                    with ".$mileage." miles.";
}

那不行吗?