Я еще новичок в массивах. Мне нужна помощь – у меня есть JSON, и я запускаю ее через некоторый PHP, который в основном разбирает JSON и декодирует его следующим образом:
stdClass Object ( [2010091907] => stdClass Object ( [home] => stdClass Object ( [score] => stdClass Object ( [1] => 7 [2] => 17 [3] => 10 [4] => 7 [5] => 0 [T] => 41 ) [abbr] => ATL [to] => 2 )
Это действительно продолжается и продолжается – НО – моя проблема – это stdClass Object
. Мне нужно иметь возможность называть это в цикле for, а затем перебирать каждый раздел (home, score, abbr, to и т. Д.). Как я могу это сделать?
Вы можете использовать get_object_vars()
для получения массива свойств объекта или вызвать json_decode()
с помощью json_decode($string,true);
для получения ассоциативного массива.
Пример:
<?php $foo = array('123456' => array('bar' => array('foo'=>1,'bar'=>2))); //as object var_dump($opt1 = json_decode(json_encode($foo))); echo $opt1->{'123456'}->bar->foo; foreach(get_object_vars($opt1->{'123456'}->bar) as $key => $value){ echo $key.':'.$value.PHP_EOL; } //as array var_dump($opt2 = json_decode(json_encode($foo),true)); echo $opt2['123456']['bar']['foo']; foreach($opt2['123456']['bar'] as $key => $value){ echo $key.':'.$value.PHP_EOL; } ?>
Вывод:
object(stdClass)#1 (1) { ["123456"]=> object(stdClass)#2 (1) { ["bar"]=> object(stdClass)#3 (2) { ["foo"]=> int(1) ["bar"]=> int(2) } } } 1 foo:1 bar:2 array(1) { [123456]=> array(1) { ["bar"]=> array(2) { ["foo"]=> int(1) ["bar"]=> int(2) } } } 1 foo:1 bar:2
Вы можете выполнять итерацию на stdClass
с помощью foreach
.