我有两个主要的变量,它们由字符串和其他变量组成。我只希望两个主要变量为echo'ed
(如果它们组成的所有变量都有数据)。
两个主要变量是$introduction
和colortxt
。
$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
答案 0 :(得分:1)
澄清(无意脱离其他答案);只有isset()
可以接受多个逗号分隔的值,不能接受empty()
。
手册说明:
在empty()
上:
布尔为空(混合$ var)
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.";
}
那不行吗?