首页 > 解决方案 > 如何返回在条件中评估的变量的名称

问题描述

我想找出在条件中检查时第一个具有错误值的变量的名称。例如:

if (!$value1 || !$value2 || !$value3){

    // return the name of the first false variable - but how?
}

PHP 评估括号中的条件,如果其中一个变量为假,那么我们执行代码。诀窍是如何让 PHP 告诉我哪个变量是错误的,而无需再次手动检查它们。有任何想法吗?

到目前为止,我有一个想法,但效率很低。

function checkFalseVars($vars){

    foreach($vars as $var){

        $v = $GLOBALS[$var];
        if (!$v){
            return $var;
       }    
    }
    return false;
}  

$value1 = true;
$value2 = false;
$value3 = false;

$vars = array('value1','value2','value3');


if (!$value1 || !$value2 ||!$value3){

    return  checkFalseVars($vars);
    // returns 'value2'
}

标签: php

解决方案


由于您要求提供变量名...

function varName( $v ) {
    $trace = debug_backtrace();
    $vLine = file( __FILE__ );
    $fLine = $vLine[ $trace[0]['line'] - 1 ];
    preg_match( "#\\$(\w+)#", $fLine, $match );
    print_r( $match );
}

$value1 = true;
$value2 = true;
$value3 = false;

$values = array($value1, $value2, $value3);
for($i = 0; $i < count($values); $i++)
{

    if($values[$i] == false)
    {
        varName($values[$i]);
    }

}

推荐阅读