PHP stdObject에서 첫 번째 요소 가져 오기
다음과 같은 개체 ($ videos로 저장 됨)가 있습니다.
object(stdClass)#19 (3) {
[0]=>
object(stdClass)#20 (22) {
["id"]=>
string(1) "123"
etc...
나는 그것을 반복하지 않고도 첫 번째 요소의 ID를 얻고 싶습니다.
배열이라면 다음을 수행합니다.
$videos[0]['id']
다음과 같이 작동했습니다.
$videos[0]->id
하지만 지금은 위의 줄에 "stdClass 유형의 개체를 배열로 사용할 수 없습니다 ..."라는 오류가 발생합니다. PHP 업그레이드 때문일 수 있습니다.
그렇다면 루프없이 첫 번째 ID를 얻으려면 어떻게해야합니까? 가능합니까?
감사!
2019 업데이트
OOPS의 모범 사례로 이동하면 @MrTrick의 답변이 올바른 것으로 표시되어야하지만 내 대답은 해킹 된 솔루션을 제공하지만 최선의 방법은 아닙니다.
{}를 사용하여 간단히 반복하십시오.
예:
$videos{0}->id
이렇게하면 객체가 파괴되지 않고 객체를 쉽게 반복 할 수 있습니다.
PHP 5.6 이하의 경우 이것을 사용하십시오.
$videos{0}['id']
array () 및 stdClass 객체는 함수를 사용하여 액세스 할 수 있습니다 .current()
key()
next()
prev()
reset()
end()
따라서 개체가
object(stdClass)#19 (3) {
[0]=>
object(stdClass)#20 (22) {
["id"]=>
string(1) "123"
etc...
그럼 당신은 할 수 있습니다.
$id = reset($obj)->id; //Gets the 'id' attr of the first entry in the object
어떤 이유로 키가 필요한 경우 할 수 있습니다.
reset($obj); //Ensure that we're at the first element
$key = key($obj);
그것이 당신을 위해 일하기를 바랍니다. :-) PHP 5.4에서 매우 엄격한 모드에서도 오류 없음
옳은:
$videos= (Array)$videos;
$video = $videos[0];
훨씬 쉽게:
$firstProp = current( (Array)$object );
$videos->{0}->id
나를 위해 일했습니다.
$ videos와 {0}은 둘 다 객체이므로으로 ID에 액세스해야합니다 $videos->{0}->id
. 중괄호를 생략하면 구문 오류 (예상치 못한 '0', 식별자 또는 변수 예상 또는 '{'또는 '$')가 발생하므로 중괄호는 0 주위에 필요합니다.
내가 사용하고 PHP 5.4.3 .
내 경우에는,도 $videos{0}->id
및 $videos{0}['id']
근무와 쇼 오류 :
stdClass 유형의 개체를 배열로 사용할 수 없습니다.
객체를 반복하고 첫 번째 루프에서 중단 할 수 있습니다.
foreach($obj as $prop) {
$first_prop = $prop;
break; // exits the foreach loop
}
Php 인터랙티브 쉘, Php 7 :
➜ ~ php -a
Interactive shell
php > $v = (object) ["toto" => "hello"];
php > var_dump($v);
object(stdClass)#1 (1) {
["toto"]=>
string(5) "hello"
}
php > echo $v{0};
PHP Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1
Stack trace:
#0 {main}
thrown in php shell code on line 1
Warning: Uncaught Error: Cannot use object of type stdClass as array in php shell code:1
Stack trace:
#0 {main}
thrown in php shell code on line 1
php > echo $v->{0};
PHP Notice: Undefined property: stdClass::$0 in php shell code on line 1
Notice: Undefined property: stdClass::$0 in php shell code on line 1
php > echo current($v);
hello
오직 current
개체와 함께 작동합니다.
참고URL : https://stackoverflow.com/questions/9474446/get-first-element-in-php-stdobject
'developer tip' 카테고리의 다른 글
여러 목록에 포함 된 모든 값의 합집합을 만드는 Pythonic 방법 (0) | 2020.11.27 |
---|---|
document.write의 대안은 무엇입니까? (0) | 2020.11.27 |
Amazon EC2에서 시간대를 설정하는 방법은 무엇입니까? (0) | 2020.11.26 |
치명적인 오류 : 포착되지 않은 오류 : 정의되지 않은 함수 mysql_connect () 호출 (0) | 2020.11.26 |
Double []을 double []로 어떻게 변환합니까? (0) | 2020.11.26 |