kim4
2016-01-09 11:34
其实有两个问题
先说第一个问题
我是通过PDO 的fetchAll(PDO::FETCH_ASSOC)属性方法获取一个关联数组
格式是一个二维数组
通过print_r打印后获得
Array ( [0] => Array ( [id] => 1 [name] => kim1 [password] => 我是中文字符 [date] => 2016-01-01 00:00:00 ) [1] => Array ( [id] => 2 [name] => kim2 [password] => 我是中文字符1 [date] => 2016-01-01 00:00:00 ) [2] => Array ( [id] => 3 [name] => kim3 [password] => 我是中文字符1 [date] => 2016-01-01 00:00:00 )
问题是我使用json_encode()方法转换后转换后得到的是 这样一个并列数组的json格式
[{"id":"1","name":"kim1","password":"\u6211\u662f\u4e2d\u6587\u5b57\u7b26","date":"2016-01-01 00:00:00"},{"id":"2","name":"kim2","password":"\u6211\u662f\u4e2d\u6587\u5b57\u7b26","date":"2016-01-01 00:00:00"},{"id":"3","name":"kim3","password":"\u6211\u662f\u4e2d\u6587\u5b57\u7b26","date":"2016-01-01 00:00:00"}]
然而老师的php是通过设置的二维数组
$members['1']['username'] = "幕课网"; $members['1']['password'] = "mukewang"; $members['2']['username'] = "袁明贺"; $members['2']['password'] = "haha"; $members['2']['address'] = "北京市朝阳区"; $members['3']['members']['username']="我是第三个用户名";
我使用同样的方法 通过print_r打印后获得的是也是和我一样的数组格式
Array ( [1] => Array ( [username] => 幕课网 [password] => mukewang ) [2] => Array ( [username] => 袁明贺 [password] => haha [address] => 北京市朝阳区 [members] => Array ( [username] => 我是第三个用户名 ) ) )
那么问题来了 同样我通过我使用json_encode()方法转换后 的结果和得出的结果截然不同
是什么问题 老师的得出的结果是:
{"1":{"username":"\u5e55\u8bfe\u7f51","password":"mukewang"},"2":{"username":"\u8881\u660e\u8d3a","password":"haha","address":"\u5317\u4eac\u5e02\u671d\u9633\u533a","members":{"username":"\u6211\u662f\u7b2c\u4e09\u4e2a\u7528\u6237\u540d"}}}
我想问的第一个问题是 为什么会这样 一样的数组格式 转换JSON后得的结果为什么截然不同
下面是第二问问题
当得到老师的这种json格式
我可以通过"$().data[1].name: 获取值 "幕课网"
那么这种[{},{}]并列数组的格式 要怎么才能获取里面的name对应的"kim1"的值
第一个问题是不是想问json_encode后,你的最外面是[ ]数组形式 ,老师的是{ }键值对形式?
php数组是不管键名的,但要想json是数组的话,那么php数组键名必须是从数字0开始且连续的,你的是从0开始,而老师的$members是从1开始的,所以json后和你的不一样。改成下面写法就可以获得和你一样的结果了。
$members[0]['username'] = "幕课网"; $members[0]['password'] = "mukewang"; $members[1]['username'] = "袁明贺"; $members[1]['password'] = "haha"; $members[1]['address'] = "北京市朝阳区"; $members[2]['members']['username']="我是第三个用户名";
print_r和json_encode后结果:
Array ( [0] => Array ( [username] => 幕课网 [password] => mukewang ) [1] => Array ( [username] => 袁明贺 [password] => haha [address] => 北京市朝阳区 ) [2] => Array ( [members] => Array ( [username] => 我是第三个用户名 ) ) ) [{"username":"\u5e55\u8bfe\u7f51","password":"mukewang"},{"username":"\u8881\u660e\u8d3a","password":"haha","address":"\u5317\u4eac\u5e02\u671d\u9633\u533a"},{"members":{"username":"\u6211\u662f\u7b2c\u4e09\u4e2a\u7528\u6237\u540d"}}]
这里解释一下刚刚想到怎么处理这个并列的json格式也就第二问题
就通过用处理数组的思维来处理这种格式json数据
获取第每一个下标即可: dara[0]['name'] 这样就可以获取name对应的值了
这个小问题解答 老师开始讲要说明的 但是始终都没说怎么处理这样的数据 然后遇到同样问题的同学们
不过第一个转换后得到结果不一样的问题 还是不知道什么回事 等待答复吧
JSON应用场景与实战
74894 学习 · 204 问题
相似问题