PHP: stdClass 개체 수
count($obj) 함수를 실행해도 올바른 번호가 반환되지 않는 json_decode에서 stdClass 개체를 만들었습니다.오브젝트에는 30개의 속성이 있지만 count() 함수의 반환은 "1"입니다.
좋은 생각 있어요?
아래는 오브젝트 중 하나입니다.(Twitter에서 일일 트렌드 정보를 요청합니다.이 개체에 여러 속성이 있는 경우 카운트($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
)
)
)
문제는 카운트가 객체의 속성이 아니라 배열 내의 인덱스를 카운트하기 위한 것이라는 점입니다(Countable 인터페이스를 구현하는 커스텀오브젝트가 아닌 경우).아래와 같이 오브젝트를 배열로 캐스팅하여 도움이 되는지 확인해 보십시오.
$total = count((array)$obj);
단순히 객체를 배열로 캐스팅하는 것만으로는 항상 작동하지는 않지만 단순 stdClass 객체이기 때문에 여기서 작업을 수행할 수 있습니다.
카운트 함수는 다음에서 사용하도록 되어 있습니다.
- 어레이
- 카운트 가능 인터페이스를 구현하는 클래스에서 파생된 개체
stdClass는 둘 다 아닙니다.원하는 것을 실현하기 위한 가장 쉬운/빠른 방법은
$count = count(get_object_vars($some_std_class_object));
이는 PHP의 get_object_vars 함수를 사용하여 객체의 속성을 배열로 반환합니다.그러면 이 배열을 PHP의 카운트 함수와 함께 사용할 수 있습니다.
개체에 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
키 수입니다.
이 목적으로 ArrayIterator를 사용할 수 있습니다.
(new \ArrayIterator($obj))->count()
일반 아리야 또는 개체 수
count($object_or_array);
다차원 아리야 또는 객체 카운트
count($object_or_array, 1); // 1 for multidimensional array count, 0 for Default
count()
기능은 어레이로 동작합니다.그러나 개체의 길이를 계산하려면 이 방법을 사용할 수 있습니다.
$total = $obj->length;
언급URL : https://stackoverflow.com/questions/1314745/php-count-a-stdclass-object
'programing' 카테고리의 다른 글
테스트 러너 'JUnit 4'를 사용하여 테스트를 찾을 수 없습니다. (0) | 2023.01.17 |
---|---|
CodeIgniter 프레임워크를 사용하여 어레이에서 여러 행을 삽입하는 방법 (0) | 2023.01.17 |
!== "displicate" vs. != null 유형 (0) | 2023.01.17 |
옵션이 설정된 경우 BitmapFactory.decodeStream이 null을 반환합니다. (0) | 2023.01.17 |
Larabel - 웅변 또는 유창 랜덤 행 (0) | 2023.01.17 |