【发布时间】:2017-04-04 00:21:54
【问题描述】:
我正在为 mySQL 导入提取 JSON 数据,并在我的 JSON 文件的 JSON 解码语句之后设置变量,我正在努力解决一些问题。我的变量设置看起来像这样
$name = $data['available_channels']['3']['name'];
以及像这样的相关 JSON
"available_channels": {
"3": {
"num": 152,
"name": "Sky Sports 3",
"stream_type": "live",
"type_name": "Live Streams",
"stream_id": "3",
"stream_icon": "http://www.tv-logo.com/pt-data/uploads/images/logo/sky_uk_sports3.jpg",
"epg_channel_id": "Sky Sports 3",
"added": "0",
"category_name": "Sports UK",
"category_id": "5",
"series_no": null,
"live": "1",
"container_extension": null,
"custom_sid": ":0:86:EEE:7F2:2:11A0000:0:0:0:",
"tv_archive": 0,
"direct_source": "",
"tv_archive_duration": 0
},
我的问题是服务的每个频道都以一个新号码开头。所以我需要像这样拉入我的变量,
$name = $data['available_channels']['ANY VALUE HERE']['name'];
有什么想法吗?我知道这一定很简单,我在这里有一个金发碧眼的时刻
谢谢
更新 1
//convert json object to php associative array
$data = json_decode($jsondata, true);
//get the values and asign variables
$name = $data['available_channels']['3']['name'];
更新 2
完整代码
$data = json_decode($jsonFile, true);
for($i = 0; $i <= count($data['available_channels']); $i++){
$name = $data['available_channels'][$i]['name'];
$num = $data['available_channels'][$i]['num'];
$epg_channel_id = $data['available_channels'][$i]['epg_channel_id'];
$category_name = $data['available_channels'][$i]['category_name'];
$stream_icon = $data['available_channels'][$i]['stream_icon'];
//insert into mysql table
$sql = "INSERT INTO channels(name, num, epg_channel_id, category_name, stream_icon)
VALUES('$name', '$num', '$epg_channel_id', '$category_name', '$stream_icon')";
if(!mysql_query($sql,$con))
{
die('Error : ' . mysql_error());
}
}
获取大约 234 行中的 117 行,但其他行是空白的......任何想法
【问题讨论】:
-
有什么问题?你可以放任何值
-
您正试图引用一个像数组这样的对象。试试
$data->something->otherthing或$data = json_decode( $data , 1 ) -
所以它在循环自动取款机中通过。一切都很好,但不是在解码中的第二个值是 3 我需要它在那个值 = 任何东西的地方
-
快速查看底部的代码... $data 变量是从 json 解码中提取的
标签: php arrays json variables var