developer tip

PHP stdObject에서 첫 번째 요소 가져 오기

optionbox 2020. 11. 26. 08:13
반응형

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

반응형