PHP 如果第一个 var 为空,则使用第二个
Posted
技术标签:
【中文标题】PHP 如果第一个 var 为空,则使用第二个【英文标题】:PHP if first var is empty use second one 【发布时间】:2018-07-18 06:12:27 【问题描述】:我有一个小问题,如果 to var 之一不为空并使用它们的值,是否可以检查变量?像这样:
$var1 = "";
$var2 = "123";
$varifnotempy= $var1 || $var2;
echo $varifnotempy;
这里我不想要 2 因为他给我的不是空的,但我希望他返回我 123 并且如果 $var1
不为空而不是使用$var1
的值
我知道我可以使用 if else 但我想知道是否可以通过变量来实现。谢谢。
【问题讨论】:
确实有很多方法可以做到这一点,而不仅仅是一种。 【参考方案1】:传统方式是使用条件(又名“三元”)运算符:
$varifnotempty = $var1 ? $var1 : $var2;
从 5.3 开始有了简写:
$varifnotempty = $var1 ?: $var2;
【讨论】:
感谢您的回答,这真的很有帮助,您能告诉我在这种情况下如何使用“不等于”吗?例如,我还有一个变量 $var3="5" 并且我想验证 $var1 是否不为空且不等于 $var3?(!empty($var1) && $var1 != $var3)
他只是返回我 1 并说 $var1 不是 empy 但我需要如果 $var1 是例如 2 并且不等于 5 而不是转我 2
那么问题出在哪里?使用我在普通三元运算符中写的内容。
如果这一切让您感到困惑,请使用简单的if
语句。无需编写令人困惑的代码。【参考方案2】:
您可以像这样使用empty()
和ternary operator:
<?php
$var1 = '';
$var2 = '123';
$varifnotempy = (!empty($var1)) ? $var1 : $var2; // => '123' because $var1 is an empty string
echo $varifnotempy;
empty()
如果 var 存在并且具有非空值,将返回 false。空值被认为是:
三元运算符的工作方式如下:$value = (if this is true) ? then set $value to this : otherwise set $value to this
。换句话说(condition) ? if true : if not true
【讨论】:
感谢您的解释,这真的很有帮助,请问我在这种情况下如何使用“而不等于”?例如,我还有一个变量 $var3="5" 并且我想验证 $var1 是否不为空且不等于 $var3? 看起来像:$varifnotempty_andnotequaltovar3 = (!empty($var1) && $var1 !== $var3) ? $var1 : $var2;
【参考方案3】:
上面的答案是完美的,但如果你想要更清晰的函数调用,你可以像下面这样使用它:
$var1 = "";
$var2 = "abc";
$varNotEmpty = (empty($var1) === true) ? $var2 : $var1;
echo $varNotEmpty;
又名。
$var1 = "";
$var2 = "abc";
if (empty($var1))
$varNotEmpty = $var2;
else
$varNotEmpty = $var1;
echo $varNotEmpty;
【讨论】:
empty() 返回一个布尔值。没理由做(empty($var1) === true)
就做empty($var1)
谢谢@Aknosis,但我试图做出清晰的描述。我总是添加=== true
只是为了让读者在编写代码时更容易。 :)【参考方案4】:
你可以像下面这样使用它:
$var1="";
$var2="123";
//one line condition code
$varifnotempy= $var1 ? $var1 : $var2;
//or
$varifnotempy= (!is_null($var1) && $var1!="") ? $var1 : $var2;
//or
$varifnotempy= (!isset($var1) || $var1!="") ? $var1 : $var2;
echo $varifnotempy;
【讨论】:
即使 $var1 为假或零,它也可以工作。当然它不会工作 id false 或零是一个字符串。以上是关于PHP 如果第一个 var 为空,则使用第二个的主要内容,如果未能解决你的问题,请参考以下文章