为了账号安全,请及时绑定邮箱和手机立即绑定

求解答一个并列的json数据应该怎么处理 已经思考了2天了还是没结果

其实有两个问题

先说第一个问题

我是通过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"的值

正在回答

2 回答

第一个问题是不是想问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"}}]


0 回复 有任何疑惑可以回复我~

这里解释一下刚刚想到怎么处理这个并列的json格式也就第二问题

就通过用处理数组的思维来处理这种格式json数据

获取第每一个下标即可:  dara[0]['name']  这样就可以获取name对应的值了 

这个小问题解答 老师开始讲要说明的 但是始终都没说怎么处理这样的数据  然后遇到同样问题的同学们

不过第一个转换后得到结果不一样的问题 还是不知道什么回事 等待答复吧 

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解答一个并列的json数据应该怎么处理 已经思考了2天了还是没结果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信