次のような JSON があります。
{
"num_found": 407343,
"results": [
{
"speaker_state": "LA",
"speaking": [
"ABC",
"DEF",
"GHI"
],
"speaker_party": "D",
},
等々。このデータを MySQL データベースに解析しようとしています。次のphpコードを適応させました:
<?php
$hostname_ndb = "localhost";
$database_ndb = "senate";
$username_ndb = "root";
$password_ndb = "root";
$ndb = mysql_pconnect($hostname_ndb, $username_ndb, $password_ndb) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_ndb);
$url = "http://xxx.yyy/text.json";
$json = file_get_contents($url);
$out = json_decode($json, true);
foreach($out["results"] as $results) {
$speaker_state = $results['speaker_state'];
$speaking2 = $results['speaking'];
$speaking = implode('', $speaking2);
$date = $results['date'];
mysql_query("INSERT INTO speeches (speaker_state, speaking, date ) VALUES('$speaker_state', '$speaking','$date')") or die (mysql_error());
}
?>
配列内に配列があり、それが問題のようです。スクリプトが機能せず、データがデータベースに保存されません。スクリプトはエラーを返します。
PHP ログには、「PHP 通知: 46 行目の /Applications/MAMP/htdocs/json.php の配列から文字列への変換」という通知が表示されます。
var_dump($speaking2) は以下を返します:
array(3) { [0]=> string(713) "XXX" [1]=> string(891) "ZZZ" [2]=> string(1189)
等々。このスクリプトを機能させるにはどうすればよいでしょうか?