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。空值被认为是:

“”(空字符串) 0(0为整数) 0.0(0 作为浮点数) “0”(0作为字符串) 空 错误 array()(一个空数组)

三元运算符的工作方式如下:$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) &amp;&amp; $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 为空,则使用第二个的主要内容,如果未能解决你的问题,请参考以下文章

如果内容为空,则使用 php 隐藏选项卡 [关闭]

在QT中怎么让第二个窗口永远在第一个窗口的正下方

linux下exec 函数第一个参数和第二个参数的区别

回调函数的使用(第二个函数需要第一个函数出结果后再调用)

打开第二个网页时,第一个网页总是显示确定要离开此页吗

PHP+Ajax手机移动端发红包实例