我的作法是使用替代对字符串进行规范化,也就是给他们都加上双引号,变成规范的php JSON 格式,然后再做处理。具体如下:
<?php $data='{ 655199:{ 480:[780,2,980], 397:[770,2,990], 596:[770,2,990] }, 655201:{ 481:[780,2,980], 398:[770,2,990], 599:[770,2,990] } }'; $data = preg_replace('/(\d+)/','"$1"',$data); var_dump(json_decode($data)); echo "<br/>"; $data='var data ={ 655199:{ 480:[780,2,980], 397:[770,2,990], 596:[770,2,990] }, 655201:{ 481:[780,2,980], 398:[770,2,990], 599:[770,2,990] } }'; $data = preg_replace('/(\d+)/','"$1"',ltrim($data,'var data =')); var_dump(json_decode($data)); //End_php
恩,就是这样,不过有没更好的东西啊,比如一个成熟的类。
这个转了后对象是数字有语法错误
我在前面了加了个字母才可以用
$data = preg_replace('/(\d+)/','"a$1"',ltrim($data,'var data ='));
不管怎么样,你这个已经能帮我解决问题了。呵呵,接豆吧
@那瞬间: 只是做了解析,没考虑到调用。
可以这样用data[655199]或data[655199][480][....]
问题所在,'655199:{480:[780,2,980],397:[770,2,990], 596[770,2,990]'。
直接使用是不行了,还得把这些字符串先转为PHP的类型。。。
@那瞬间: 到google查询字符串转json就全部出来了,或者是将json转成php数组进行操作