count ($ obj) 함수를 실행할 때 올바른 숫자를 반환하지 않는 json_decode에서 만든 stdClass 객체가 있습니다. 객체에는 30 개의 속성이 있지만 count () 함수의 반환 값은 1입니다.
어떤 아이디어?
아래는 개체 중 하나의 예입니다. (트위터에서 일일 트렌드 정보를 요청하고 있습니다.) 이 객체에 둘 이상의 속성이있는 경우 count ($ obj)는 1이됩니다.
[trends] => stdClass Object
(
[2009-08-21 11:05] => Array
(
[0] => stdClass Object
(
[query] => "Follow Friday"
[name] => Follow Friday
)
[1] => stdClass Object
(
[query] => "Inglourious Basterds" OR "Inglorious Basterds"
[name] => Inglourious Basterds
)
[2] => stdClass Object
(
[query] => Inglourious
[name] => Inglourious
)
[3] => stdClass Object
(
[query] => #songsincode
[name] => #songsincode
)
[4] => stdClass Object
(
[query] => #shoutout
[name] => #shoutout
)
[5] => stdClass Object
(
[query] => "District 9"
[name] => District 9
)
[6] => stdClass Object
(
[query] => #howmanypeople
[name] => #howmanypeople
)
[7] => stdClass Object
(
[query] => Ashes OR #ashes
[name] => Ashes
)
[8] => stdClass Object
(
[query] => #youtubefail
[name] => #youtubefail
)
[9] => stdClass Object
(
[query] => TGIF
[name] => TGIF
)
[10] => stdClass Object
(
[query] => #wish09
[name] => #wish09
)
[11] => stdClass Object
(
[query] => #watch
[name] => #watch
)
[12] => stdClass Object
(
[query] => Avatar
[name] => Avatar
)
[13] => stdClass Object
(
[query] => Ramadhan
[name] => Ramadhan
)
[14] => stdClass Object
(
[query] => Goodnight
[name] => Goodnight
)
[15] => stdClass Object
(
[query] => iPhone
[name] => iPhone
)
[16] => stdClass Object
(
[query] => #iranelection
[name] => #iranelection
)
[17] => stdClass Object
(
[query] => Apple
[name] => Apple
)
[18] => stdClass Object
(
[query] => "Usain Bolt"
[name] => Usain Bolt
)
[19] => stdClass Object
(
[query] => H1N1
[name] => H1N1
)
)
)
답변
문제는 count가 개체의 속성이 아니라 배열의 인덱스를 계산하기위한 것입니다 (Countable 인터페이스를 구현하는 사용자 지정 개체가 아닌 경우). 아래와 같이 객체를 배열로 캐스팅하고 도움이되는지 확인하십시오.
$total = count((array)$obj);
단순히 객체를 배열로 캐스팅하는 것이 항상 작동하는 것은 아니지만 간단한 stdClass 객체이므로 여기서 작업을 수행해야합니다.
답변
카운트 기능은
- 배열
- 셀 수있는 인터페이스를 구현하는 클래스에서 파생 된 개체
stdClass는 이들 중 어느 것도 아닙니다. 목표를 달성하는 가장 쉽고 / 빠른 방법은
$count = count(get_object_vars($some_std_class_object));
이것은 객체의 속성을 배열로 반환하는 PHP의 get_object_vars 함수를 사용합니다 . 그런 다음이 배열을 PHP의 count 함수와 함께 사용할 수 있습니다.
답변
개체에 30 개의 속성이 없습니다. 하나는 30 개의 요소가있는 배열입니다. 해당 배열의 요소 수가 필요합니다.
답변
여기에서는 count ()에 문제가 없습니다. “trends”가이 경우에 계산되는 유일한 키입니다. 다음을 시도해 볼 수 있습니다.
count($obj->trends);
또는:
count($obj->trends['2009-08-21 11:05']);
또는 다음을 수행 할 수도 있습니다.
count($obj, COUNT_RECURSIVE);
답변
그냥 사용하세요
$i=0;
foreach ($object as $key =>$value)
{
$i++;
}
변수 $i
는 키의 수입니다.
답변
일반 아리아 또는 개체 계산
count($object_or_array);
다차원 아리아 또는 객체 계산
count($object_or_array, 1); // 1 for multidimensional array count, 0 for Default
답변
count()
함수는 배열과 함께 작동합니다. 그러나 물체의 길이를 세고 싶다면이 방법을 사용할 수 있습니다.
$total = $obj->length;