2014-04-12 2 views
1

어떻게이 if 문을 단축 할 수 있습니까?file_exists 조건을 사용하여 if 문을 단축하십시오.

if(file_exists($path1) 
    || file_exists($path2) 
    || file_exists($path3) 
    || file_exists($path4) 
) 
+3

이해하기 어렵습니까? 아니면 4 개 이상의 경로가 검사되고 있습니까? 배열에 경로를 넣고 루프를 사용할 수는 있지만 길이가 짧지는 않습니다. – AD7six

+0

많은 수의 경로를 검사해야하는 경우에만이 작업에 대한 지출을 고려할 것입니다.이 경우 @ AD7six [주석] (http://stackoverflow.com/questions/23028036/shorten-if-statement-with- file-exists-condition # comment35179597_23028036)가 방법입니다. –

+0

10 개가 넘는 경로에 존재할 수있는 많은 파일을 검사해야합니다. 그래서 루프를 사용하는 것을 두려워합니다. 이 경우 다른 솔루션이 있습니까? – Lewis

답변

4

모든 파일을 배열에 넣으면 그 파일에 함수를 매핑 할 수 있습니다. 당신은 array_product를 사용하여 모든 값에 해당하는지 여부를 확인할 수 있습니다

$path = Array("path/file1.php","path/file2.php","path/file3.php","path/file4.php"); 
$check = array_product(array_map("file_exists",$path)); 
내가 오해

, 나는 다음과 같은 변화가 적어도 1이 존재 확보 할 수 있도록, 모든 파일이 존재하는지 확인하고 싶어서 생각 :

$check = array_sum(array_map("file_exists",$path)); 
0

당신은 아마 당신이 검사 할 경로의 많은 경우 배열과 루프를 사용하고 싶습니다.

for($i=0;$i<count($path);$i++ 
    if(file_exists($path[$i])) 
    //do something.. 

일부 경로 검사를 제거하고 싶지 않으면 명령문이나 조건을 단축 할 수 있다고 생각하지 않습니다.

1

는 경로 (N 번호)의 큰 어떤이있는 경우 다음이 코드 코드 위

$ARR_PATHS = array($path1, $path2, $path3, .......... , $pathN); 

$process = false; 
foreach($ARR_PATHS as $path) 
{ 
    if(file_exists($path)) 
    { 
     $process = true; 
     break; 
    } 
} 

if($process) 
{ 
    // continue your code if any one of the path is exists 
} 

를 사용할 수있는 경우 문이 아닌 짧습니다. N 개의 경로 또는 동적 생성 경로 (N은 동적 임)가있을 때 유용합니다.