2014-11-02 3 views
-2

count(null) === 0 이후 count(false) === 1은 어떤 의미입니까?PHP에서 count (false)가 1을 반환하는 이유는 무엇입니까?

카운트 - 배열의 모든 요소 또는 개체의 일부를 카운트합니다. - 논리 값이 프리미티브가 아닌 배열이나 countables 때문에 이것은 더 적은 의미가 http://php.net/manual/en/function.count.php

.

+0

로 설정 그리고 그것이 정의 된 방법 그냥되는 true 때문에 얻을 것이다 : https://github.com/ # php/php-src/blob/master/ext/standard/array.C# L285 – mario

답변

1

count은 요소 수를 반환합니다. false은 하나의 요소 (부울 값)이지만 null은 아무 것도 아니며 null은 값이 아닙니다. 당신이 null로 설정하여 배열에, 예를 들어, 항목을 변수를 파괴 할 수

참고 :

$a = array(1,2,3); 
$a[1] = null; 
var_dump(isset($a[1])); 

당신은 더 이상 정의 false$a[1] 때문에 얻을 수 없습니다.

당신이 거짓으로 동일한 작업을 수행하는 경우 :

$a = array(1,2,3); 
$a[1] = false; 
var_dump(isset($a[1])); 

당신은 $a[1]이 부울 false

+1

사실, @mario가 널이 아닌 것보다'count()'소스를 읽으면, 배열이나 객체는 1을 반환합니다. 배열과 셀 수있는 객체를 미리 카운트하는 함수에 대해 이상한 것입니다. 예제는 완전히 다른 경우입니다. $ a는 실제 배열입니다. 'FALSE'는 원시 부울 값입니다. 배열의 원소가 아닙니다. 예를 들어, 데이터베이스에서 여러 행을 가져 오는 get_rows_from_db 함수가 있거나 쿼리가 실패하면 false를 반환하는 경우를들 수 있습니다. if (is_array ($ result) && count ($ result)) 대신에'if (count (get_rows_from_db())) {}'가 충분할 것으로 기대할 것입니다 ... – max

+0

. -1을 반환해도 더 의미가 있습니다. – max

관련 문제