twitter apiを使っていて、perlでうまくいかないのでよく使われているphpのtwitteroauthでやっているのだが、json形式のデータから目指す値を取り出す方法がよくわからない。
phpの基礎からやっていく。
まず、連想配列。
<?php
$beatles = array (
'guitar' => 'george',
'bass' => 'paul',
'drums' => 'ringo',
'vocal' => 'john'
);
echo $beatles['guitar'];
echo "\n";
?>
実行結果
# php hai.php
george
今度は、json形式のデータを作り、それを配列に戻して値を取り出す。
<?php
$arr = array('John' => 'Lennon', 'Paul' => 'McCartney', 'George' => 'Harrison', 'Ringo' => 'Starr');
echo $arr['John']."\n";
echo $arr['Ringo']."\n";
echo "\n";
$json = json_encode($arr);
var_dump($json);
echo "\n";
$arr2 = json_decode($json);
var_dump($arr2);
$arr2 = json_decode($json,true);
var_dump($arr2);
echo $arr2['John']."\n";
?>
実行結果
# php a.php
Lennon
Starr
string(72) "{"John":"Lennon","Paul":"McCartney","George":"Harrison","Ringo":"Starr"}"
object(stdClass)#1 (4) {
["John"]=>
string(6) "Lennon"
["Paul"]=>
string(9) "McCartney"
["George"]=>
string(8) "Harrison"
["Ringo"]=>
string(5) "Starr"
}
array(4) {
["John"]=>
string(6) "Lennon"
["Paul"]=>
string(9) "McCartney"
["George"]=>
string(8) "Harrison"
["Ringo"]=>
string(5) "Starr"
}
Lennon
json_decodeで、オプション trueをつけると連想配列になる。つけない場合はvar_dumpすると object(stdClass) となっており、値を参照できなかった。どういう用途に使うのか?