チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【PHP】JSONの値を連想配列にしてforeachで取り出すメモ

Twitterで吐き出されるJSONをループでうまく取り出せなかったのでメモ。

JSONだとよくあるだろうが、Twitterで取り出す場合は少なくとも3つくらいの階層になるっぽい。
$test['users'][0]['name']みたいな。
1つずつなら$test['users'][0]['name']とかでとりだせるが、ループの時にハマった。


こんなJSONがあるとき
24 $friendsList = (json_decode(json_encode($friendsList),true));

//var_dump($friendsList);
array (size=5)
'users' =>
array (size=20)
0 =>
array (size=46)
'id' => int 1111111
'id_str' => string '1111111' (length=8)
'name' => string 'ももたろう' (length=18)
'screen_name' => string 'xxxxxx' (length=7)
'location' => string 'Tokyo' (length=5)
'description'

※一部改変してます



こんな風にしたら整形できた。

25
26 //整形
27 $cnt = 0;
28 foreach($friendsList['users'] as $result){
29 $followList[$cnt]['name'] = $result['name'];
30 $cnt += 1;
31 }
32 var_dump($followList);


あとは整形後の配列を普通にループして出せば良い。


foreach($aaa as $value){
echo $value;
}

というのは、つまるところ$aaa[0], $aaa[1],,,,となっているfor文と同じ。
添字が0,1,,,と増えていくならこのままでよく言われているが、
この数字が全部userのしたに0,1,,,,とかなら
$aaa['user'] as $valueとしてあげると毎回user以下の0,1,,,をみにいくということ。
勉強になった。