PHP 如果第一个变量为空则使用第二个

问题描述 投票:0回答:4

我有一个小问题,如果两个变量之一不为空并使用它们的值,是否可以检查一个变量?像这样:

$var1 = "";
$var2 = "123";
$varifnotempy= $var1 || $var2;
    
echo $varifnotempy;

在这里我不想2因为它给我哪个不是空的,但我希望它返回我123并且如果

$var1
不为空然后使用
$var1

的值

我知道我可以使用 if else,但我想知道是否可以通过变量来实现它。

php if-statement var
4个回答
10
投票

传统的方法是使用条件(又名“三元”)运算符:

$varifnotempty = $var1 ? $var1 : $var2;

从 5.3 开始有一个速记:

$varifnotempty = $var1 ?: $var2;

1
投票

您可以像这样使用

empty()
三元运算符

<?php

$var1 = ''; 
$var2 = '123';

$varifnotempy = (!empty($var1)) ? $var1 : $var2; // => '123' because $var1 is an empty string

echo $varifnotempy;
如果 var 存在且具有非空值,

empty()
将返回 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


0
投票

上面的答案很完美,但如果你想要更清晰的函数调用,你可以像下面这样使用:

$var1 = "";
$var2 = "abc";

$varNotEmpty = (empty($var1) === true) ? $var2 : $var1;
echo $varNotEmpty;

又名。

$var1 = "";
$var2 = "abc";

if (empty($var1)) {
  $varNotEmpty = $var2;
} 
else {
  $varNotEmpty = $var1;
}

echo $varNotEmpty;

0
投票

您可以像下面这样使用它:

$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;
© www.soinside.com 2019 - 2024. All rights reserved.