このブログを検索

2013/01/25

phpの連想配列

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) となっており、値を参照できなかった。どういう用途に使うのか?