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

Using empty() to adjust output with multiple variables

我有两个主要变量,它们由字符串和其他变量组成。我希望这两个主要变量只有 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

检查两个变量是否不为空回显它们:

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

另一方面,虽然编码风格有个人偏好,但设置这些变量的位置似乎很尴尬,因为您根据条件将它们设置为空,但逻辑上(我的逻辑least) 是将它们预设为空,如果数据存在则添加数据.

此处代替您的代码:

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)
) {

我无法让 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.";
}

这样不行吗?

澄清(无意从其他答案中删除);只有 isset() 可以接受多个逗号分隔值,而不是 empty().

手册状态:

empty() 上:

bool empty ( mixed $var )

isset()

bool isset ( mixed $var [, mixed $... ] )

因此需要分开检查每个值是否为空

即:

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

或使用 || (OR) 逻辑运算符,具体取决于您要检查的内容;如果有任何一个或全部为空。

注:

您在这里使用的内容:

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

理论上 会是 "false positive".

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

即:

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

但是,前 2 个需要 ! 否定运算符,因为您要检查某事是否为真。

即:

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