2010-12-02 3 views
0

действительно ли это так? Я все еще пишу кодировку базы данных, но я хочу убедиться, что я нахожусь на правильном пути, поэтому при тестировании мне не придется много ошибок.двойная проверка, если инструкция с is_file

$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"; 
    } 
+0

ИМХО ваш код легче понять, чем большинство предложений, вы просто не хватает чек, как @ajreal указывает. – 2010-12-02 11:51:07

ответ

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

Просто упрощать его ...

$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 (для обоих e xamples).

+0

Оба фрагмента дают неправильный результат. Второй даже не проверяет второй файл вообще. – rik 2010-12-02 11:45:08

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; 
0

Просто еще раз типа жонглирования

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