2014-03-19 2 views
0

비슷한 질문을 찾으려고했지만 아무 것도 나오지 않았습니다. 만약 당신이 관련이 있으면 나에게 말해 주면 이걸 닫을거야. 좋아, 내가 다음 코드가 있습니다PHP - IF 문 최상의 시나리오

$fruits = ['Banana', 'Kiwi', 'Apple']; 
$fruits_no = count($fruits); 

이제 어떤 값이 배열에 저장 또는 내가 더 문을하고 있어요 전에 빈/NULL 인 경우 우리가 점검 할 필요가 있다고 말할 수 있습니다.

if ($fruits_no > 0) { } 

또는

if ($fruits) { } // Evaluates to TRUE since any positive Integer is TRUE 

내 질문은 성능보기에서 더 나은이 두 가지 중 어느입니다 :이를 위해 나는 경우 두 가지가?

+1

이러한 간단한 문장에는 성능상의 문제가 없습니다. 가장 읽을만한 선택을하십시오. – moonwave99

+0

성능면에서 수십만 번의 반복이 필요하므로 조기 최적화가 필요합니다. –

+1

@Eugen Zaharia : 모든 양수 및 음수 정수를 참값으로 평가합니다. – lshettyl

답변

1

질문이 명확하지 않지만 여러 옵션을 남겨 두겠습니다.

먼저 어레이가 비어 있는지 확인하려면 PHP에 empty()이 있어야합니다. PHP 5.5 이전에는 표현식과 함께 사용할 수 없으므로 데이터가 일부 표현식의 결과 일 경우 이전 버전의 PHP에서는 오류가 발생합니다.

둘째, 빈 배열은 값이 빈 배열과 다릅니다. 예 :

$a = []; 
$b = ['']; 

var_dump(empty($a), empty($b));//true, false 

- 수행 할 작업을 결정해야합니다. 다행히 배열을 변형하고 빈 값을 제거하는 쉬운 방법이 있습니다. 즉 array_filter()입니다 :

$fruits = ['', 0]; 
var_dump(array_filter($fruits));//array(0) { } 

따라서, 당신은 그것을 사용하고 empty() 검사와 결합 할 수 있습니다. 내가 empty()의 버전에 따라 동작을 언급 한 이유입니다 - PHP 5.5 수표는 수행 할 수 있습니다

if(!empty(array_filter($fruits))) 
{ 
} 

-하지만하지 PHP < = 5.4. 이 버전에서는 array_filter()의 결과를 별도의 변수에 저장해야합니다. empty()

3

제 생각에는 배열이 비어 있는지 확인하는 가장 좋은 방법은 empty()입니다. 예 :

if(!empty($fruits)) 
{ 
    // $fruits is not empty. 
} 
0

예를 들어 가능한 조건을 확인하십시오.

<?php 
$fruits = ['Banana', 'Kiwi', 'Apple']; 

if($fruits["0"]) 
{ 
    /* Present */ 
} 
if($fruits["0"] !="") 
{ 
    /* Present */ 
} 

if(isset($fruits["0"])) 
{ 
    /* Present */ 
} 

if($fruits["0"] == NULL) 
{ 
    /* Not Present */ 
} 

if($fruits["0"] == "") 
{ 
    /* Not Present */ 
} 
?>