計算數組中的單元數目或對象中的屬性個數击你。
int count (mixed $array_or_countable [, int $mode = COUNT_NORMAL ])
/*null 輸出0*/
echo count(null) . '<br>'; //0
/*字符串 輸出1*/
echo count('null') . '<br>'; //1
echo count('abc') . '<br>'; //1
/*數字 輸出1*/
echo count(1) . '<br>'; //1
/*普通數組*/
$arr = [1, 2, 3, 4];
echo count($arr) . '<br>'; //4
/*不遞歸輸出*/
$arr = [1, 2, 3, 4, [5, 6]];
echo count($arr) . '<br>'; //5
echo count($arr, 0) . '<br>'; //5
echo count($arr, COUNT_NORMAL) . '<br>'; //5
/*遞歸輸出*/
echo count($arr, 1) . '<br>'; //7
echo count($arr, COUNT_RECURSIVE) . '<br>'; //7
/*普通對象 如果不轉換成數組玉组,永遠輸出1*/
class User
{
private $name;
private $address;
}
$user = new User();
echo count($user) . '<br>'; //1
print_r((array) $user); //Array ( [Username] => [Useraddress] => )
echo count((array) $user) . '<br>'; //2
/*array like object 輸出count方法返回值*/
class User1 extends ArrayObject
{
public function count() {
return 4;
}
}
$user1 = new User1();
echo count($user1) . '<br>'; //4
/*Countable 輸出count方法返回值*/
class User2 implements Countable
{
public function count() {
return 5;
}
}
$user2 = new User2();
echo count($user2) . '<br>'; //5
總結
進入switch語句檢測參數類型:
- 如果是NULL,直接返回0
- 如果是數組丁侄,調用php_count_recursive函數機選數組元素個數
- 如果是對象球切,先檢查是否為數組對象(array like object),如果是绒障,則計算數組對象的數量
- 否則,如果對象實現了Countable接口捍歪,則調用Countable的count方法
- 最后户辱,其他類型比如整型或字符串鸵钝,都返回1。