PHP变量“默认值”

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

我想从会话中获取一个值,但是如果未定义,请使用默认值。当然,我也想绕过PHP通知。

以下功能可以做到这一点:

function get(&$var, $default){
    if(isset($var)) return $var;
    return $default;
}

Example in action

是否有一种方法可以在每个文件中都没有定义此功能?

php variables default-value
5个回答
8
投票

您可以在一个脚本中定义它,然后在其他脚本中require_once定义该脚本

您也可以只使用三元运算符:

$myVar = isset($var)?$var:$default;

2
投票

使用此简洁的替代方法:

isset($myVar) || $myvar=$default;

||运算符是短路的,如果第一个运算符的值为真,它将不评估第二个运算符。


0
投票

例如,在这种情况下,您可以使用我的微型库ValueResolver

$myVar = ValueResolver::resolve($var, $default);

并且不要忘记使用名称空间use LapaLabs\ValueResolver\Resolver\ValueResolver;

也具有类型转换功能,例如,如果变量的值应为integer,请使用此功能:

$id = ValueResolver::toInteger('6 apples', 1); // returns 6
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)

检查docs以获取更多示例


0
投票

从PHP 7开始,您现在可以使用null合并运算符:

$var ?? $default

完全类似于您的功能


-1
投票

使用较少的代码即可完成所需的工作。

您无需再次使用_?_:_格式指定变量。

echo $var?:"default";

与]相同>

echo $var?$var:"default";

就空支票而言,您可以使用@将通知静音,我不确定技术方面的影响,但是您已经在使用这种格式进行自己的支票了:

echo @$non_existing_var?:"default";

一些例子:

<?php

    $nope = null;
    $yup = "hello";
    echo ($nope?:$yup) . "\n" ;
    echo ($yup?:$nope)  . "\n" ;

    $items = [ 'one', 'two', false, 'three', 'four', null ];

    foreach($items as $item):
        echo($item?:"default shown (".var_export($item,true).")")."\n";
    endforeach;

    echo(@$non_existing?:"default for non-existant variable!");

?>

输出:

$ php variabledefault.php
 hello
 hello
 one
 two
 default shown (false)
 three
 four
 default shown (NULL)
 default for non-existant variable!%                                                                                                                   
© www.soinside.com 2019 - 2024. All rights reserved.