php
PHP - count 함수
int count ( mixed $var [, int $mode ] )
(PHP 4, PHP 5)
배열원소나 객체의 수를 세는 함수로 재귀적 카운트가 가능합니다. sizeof 함수와 동일한 동작을 하며, mode 에 1(또는 상수 COUNT_RECURSIVE)로 설정하면 재귀적, 다차원 배열의 수를 셉니다. mode를 생략하면 1차원 배열만 카운트합니다.
사실 음수나 false가 카운트 수에 포함되지 않아야 한다면, 다음과 같이 함수를 작성해서 사용할 수 있습니다.
다음은 재귀적으로 다차원 배열 수를 셉니다.
다음은 참고할 다차원 예제입니다.
다음은 재귀함수를 사용하여 배열의 실질적 수를 카운트합니다.
(PHP 4, PHP 5)
배열원소나 객체의 수를 세는 함수로 재귀적 카운트가 가능합니다. sizeof 함수와 동일한 동작을 하며, mode 에 1(또는 상수 COUNT_RECURSIVE)로 설정하면 재귀적, 다차원 배열의 수를 셉니다. mode를 생략하면 1차원 배열만 카운트합니다.
<?php
// null 은 0의 값을 가집니다.
echo count(null);
echo "<br />\n"; // 결과: 0
echo count(false);
echo "<br />\n"; // 결과: 1
// 빈 배열이면 0을 반환합니다.
echo count(array());
echo "<br />\n"; // 결과: 0
// $bar 변수를 설정하지 않았다면, 0 을 반환합니다.
echo count($bar);
echo "<br />\n"; // 결과: 0
echo count(0);
echo "<br />\n"; // 결과: 1
echo count(-1);
echo "<br />\n"; // 결과: 1
echo count(1);
echo "<br />\n"; // 결과: 1
echo count("");
echo "<br />\n"; // 결과: 1
echo count(" "); // 결과: 1
?>
사실 음수나 false가 카운트 수에 포함되지 않아야 한다면, 다음과 같이 함수를 작성해서 사용할 수 있습니다.
<?php
function icount($cnt, $mode=0){
if($mode === 1){
$mode = COUNT_RECURSIVE;
}
if(!empty($cnt) && ($cnt !== -1)){
return count($cnt, $mode);
}
return 0;
}
echo icount(-1);
echo "<br />\n"; // 결과: 0
echo icount(false);
echo "<br />\n"; // 결과: 0
echo icount(0);
echo "<br />\n"; // 결과: 0
echo icount(""); // 결과: 0
?>
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
// 결과: 3
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
$result = count ($b);
// 결과: 3
?>
다음은 재귀적으로 다차원 배열 수를 셉니다.
<?php
$food = array( 'fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard','pea'));
// 재귀 count 수
echo count($food,COUNT_RECURSIVE);
// 결과: 8
// 보통 count 수
echo count($food);
// 결과: 2
?>
다음은 참고할 다차원 예제입니다.
<?php
$data = array(
"apples" =>
array("red", "yellow", "pineapples", "green"),
"bananas" =>
array("small", "medium", "big", "large"),
"vegs" =>
array("potatoes", "carrots", "onions", "join")
);
$rows = count($data,0);
$cols = (count($data,1)/count($data,0))-1;
echo "\$rows => $rows, \$cols => $cols";
// 결과: $rows => 3, $cols => 4
?>
다음은 재귀함수를 사용하여 배열의 실질적 수를 카운트합니다.
<?php
function countValuesRecursive($array, $count = 0) {
foreach ($array as $value) {
if (is_array($value)) {
$count = countValuesRecursive($value, $count);
} else {
if ($value) {
$count++;
}
}
}
return $count;
} // end func
$data = array(
"apples" =>
array("red", "yellow", "pineapples", "green"),
"bananas" =>
array("small", "medium", "big", "large"),
"vegs" =>
array("potatoes", "carrots", "onions", "join")
);
echo countValuesRecursive($data);
// 결과: 12
?>
0 댓글