PHP空测试验结果不一致

时间:2014-04-19 00:26:01

标签: php file-exists string

我拉入XML文件并执行各种数据按摩。我为变量分配了一个元素(没有数据)并测试了变量是否为空。测试是错误的。不知道为什么,我直接测试了元素并且它传递为真。对此感到困惑,我把变量放在几个条件下,只是为了看看我在处理什么。这让我感到困惑,因为结果似乎与我完全不一致。 我通过的代码如下:

$xmldata = simplexml_load_file('data.xml');
$picture = $person->picturefile;       <--picturefile is empty
if (!empty($person->picturefile)) {
    echo "picture is not empty";
    } else {
    echo "picture is empty";
    }

if (!empty($picture)) {
    echo "picture is not empty";
    } else {
    echo "picture is empty";
    }

$tempfile = "members/$picture";
if (file_exists($tempfile)) {
   echo "<div class=mgridimg><img src=$tempfile></div>";
}

xml路径的测试产生错误条件(图片为空),但变量的测试产生真实条件(图片不为空)。
我通过strlen测试把变量放到strlen = 0。

从xml文件中,$ picture在填充时具有文件名。 同样令人困惑,虽然$ picture为空,但file_exists测试传递为true。 我还验证了在上面的测试中,$ tempfile包含&#34; members /&#34;的值。 我无法理解变量或file_exists测试的空白测试。 我可以围绕这个编码,但我想知道为什么我看到了我所看到的。 任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:0)

对于第一种情况,我觉得几乎不可能成真。它们都应该是平等的。你试过修剪吗?

对于file_exists函数,如果您不希望在dir上为true,则应检查!is_dir()

E.g:

var_dump(file_exists('New Folder/'));

var_dump(file_exists('New Folder/') && !is_dir('New Folder/'));

var_dump(file_exists('New Folder/New Text Document.txt') && !is_dir('New Folder/New Text Document.txt'));

输出:

boolean true

boolean false

boolean true