使用is_file仔细检查if语句

时间:2010-12-02 11:26:29

标签: php

这看起来有效吗?我还在为它编写数据库编码但是我想确保我在正确的路径上,所以在测试时我不会遇到很多错误。

$filechk1 = "../temp/files/" . $data[0] . ".doc";
$filechk2 = "../temp/files/" . $data[1] . ".doc";

if(is_file($filechk1) && is_file($filechk2)) {
        $rec_type = "3";
    } else if (!is_file($filechk1) && is_file($filechk2)) {
        $rec_type = "2";
    } else if (is_file($filechk1) && !is_file($filechk2)) {
        $rec_type = "1";
    }

4 个答案:

答案 0 :(得分:1)

$is_file_1 = is_file($filechk1);
$is_file_2 = is_file($filechk2);

if ($is_file_1) 
{
  $rec_type = $is_file_2 ? 3 : 1;
}
else
{
  if ($is_file_2) $rec_type = 2;
}

看起来您忘记检查两个文件是否都无效..

答案 1 :(得分:1)

简化它......

$filechk1 = "../temp/files/" . $data[0] . ".doc";
$filechk2 = "../temp/files/" . $data[1] . ".doc";

$rec_type = 0;
if(is_file($filechk1))
    $rec_type++; // $rec_type += 2;
if(is_file($filechk2))
    $rec_type += 2; // $rec_type++;

$filechk1 = "../temp/files/" . $data[0] . ".doc";
$filechk2 = "../temp/files/" . $data[1] . ".doc";

$rec_type = 0;
$rec_type += is_file($filechk1) ? 1 : 0;
$rec_type += is_file($filechk2) ? 2 : 0;

此外,如果没有文件,$rec_type将为0(对于这两个示例)。

答案 2 :(得分:0)

$rec_type = 0;
if (is_file('../temp/files/'. $data[0] .'.doc'))
    $rec_type++;
if (is_file('../temp/files/'. $data[1] .'.doc'))
    $rec_type += 2;

答案 3 :(得分:0)

再次使用类型杂耍

$rec_type = is_file('../temp/files/'. $data[0] .'.doc') * 1 // just to force an int
          + is_file('../temp/files/'. $data[1] .'.doc') * 2;