如何获取If语句来操纵变量

时间:2013-06-13 13:49:22

标签: php

我正在编写一个简单的测试用例来操作各种变量组 取得一些具体成果,但我需要一个“第三只眼睛”才能看到我在做什么 错误。我没有得到如下所述的预期结果。

Sample Code:

$this->_default['method'] = 'index';

// Input-
// Group one var Option:
$pMethod = 'mission';
$arg1    = 'NULL';
$arg2    = 'NULL';
$arg3    = 'NULL';

// Group two var Option:
$pMethod = 'mission-statements-p_2';;
$arg1    = 'NULL';
$arg2    = 'NULL';
$arg3    = 'NULL';

// Group three var Option:
$pMethod = 'mission';
$arg1    = 'mission-statements-p_2';
$arg2    = 'NULL';
$arg3    = 'NULL';


if ($pMethod && $pMethod !== $this->_default['method'])
{

$find = 'p_';
$pos1  = strpos($pMethod, $find);
$pos2  = strpos($arg1, $find);


if ($pos1 !== false)
{ 
    list($arg1,$arg2)= explode("-p_",$pMethod);
    $method = 'page';
    $arg1 = !empty($arg1) ? $arg1 : NULL;
    $arg2 = !empty($arg2) ? $arg2 : NULL;
    $arg3 = NULL;

}
else if ($pos1 === false && $pos2 !== false)
{
    list($arg2,$arg3)= explode("-p_",$arg1);
    $method = 'page';
    $arg1 = $pMethod;
        $arg2 = !empty($arg2) ? $arg2 : NULL;
        $arg3 = !empty($arg3) ? $arg3 : NULL;
    }
}
else 
{
$method = $pMethod;
    $arg1 = !empty($arg1) ? $arg1 : NULL;
    $arg2 = !empty($arg2) ? $arg2 : NULL;
    $arg3 = NULL;
}


// The expecting output results should be:

// Group one var Option: no changes

// Group two var Option:
$pMethod = 'page';
$arg1    = 'mission-statements';
$arg2    = 2;
$arg3    = 'NULL';

// Group three var Option:
$pMethod = 'page';
$arg1    = 'mission';
$arg2    = 'mission-statements';
$arg3    = 2;

1 个答案:

答案 0 :(得分:1)

您正在测试!empty($arg1)其中$arg1被定义为$arg1 = 'NULL';will not evaluate to empty,因为字符串'NULL'不被视为空,而是NULL常数,即。

要修复,请更改定义以省略字符串:

$arg1 = NULL; 
// etc...

你也不需要重复这些定义,你大多用它们的值覆盖它们:

// Input-
// Group one var Option:
$pMethod = 'mission';
$arg1    = 'NULL';
$arg2    = 'NULL';
$arg3    = 'NULL';

// Group two var Option:
$pMethod = 'mission-statements-p_2';;
$arg1    = 'NULL'; // These
$arg2    = 'NULL'; // Are
$arg3    = 'NULL'; // Redundant