将JS中的数组post到php程序
$('#pics').val(uploaded_pics);
然后serialize,保存到数据库
'pics' => empty($POST['pics'])?'':addslashes(serialize($POST['pics'])),
通过unserialize取出来的时候,不是Array对象
$blog['pics'] = empty($blog['pics'])?array():unserialize($blog['pics']);
$blog['pics']值输出为以下格式
[{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951237xdG6.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951237xdG6.jpg\",\"desc\":\"\",\"picid\":\"176105\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951237fF5C.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951237fF5C.jpg\",\"desc\":\"\",\"picid\":\"176106\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_13309512374w4T.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_13309512374w4T.jpg\",\"desc\":\"\",\"picid\":\"176107\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951238sjSE.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951238sjSE.jpg\",\"desc\":\"\",\"picid\":\"176108\"}]请问怎么弄成php的数组来用呢?
另外,这段文本中可能有中文   我的程序是gbk版本的   不知道会有乱码不  谢谢

解决方案 »

  1.   

    json_decode()函数可以将这段JSON字符串转换为数组。前提是要用UTF-8编码才行,你可以用iconv()函数转换这段字符串的编码,例如iconv("GBK", "UTF-8", $str);
      

  2.   

    showmessage(json_decode(iconv("GBK", "UTF-8", $str),true));
    输出时空白呢
      

  3.   

    $str就是那个$blog['pics'],你确定$str已经赋值?直接新建个页面测试几分钟的事而已
      

  4.   

    $jsonStr='[{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951237xdG6.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951237xdG6.jpg\",\"desc\":\"\",\"picid\":\"176105\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951237fF5C.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951237fF5C.jpg\",\"desc\":\"\",\"picid\":\"176106\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_13309512374w4T.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_13309512374w4T.jpg\",\"desc\":\"\",\"picid\":\"176107\"},{\"albumid\":\"27785\",\"thumb\":\"attachment/201203/5/5_1330951238sjSE.jpg.thumb.jpg\",\"src\":\"attachment/201203/5/5_1330951238sjSE.jpg\",\"desc\":\"\",\"picid\":\"176108\"}]';
    $str = stripslashes($jsonStr);    //去掉\
    $resultArr = json_decode($str);   //页面本身编码是utf-8就不用 iconv()echo '<pre>';
    var_dump($resultArr);
      

  5.   


    我用这种方式能转成数组
    $a = json_decode(iconv("GBK", "UTF-8", stripslashes(unserialize($jsonStr))));
    showmessage(count($a));
    输出4
    showmessage(count($a[0]));就输出空格
    var_dump($a);也是空格
    这又是为什么呢
      

  6.   

    你post的数据应该是json_encode了的吧..你不知道的话先var_dump下
      

  7.   

    没有经过json_encode  直接是js的数组
      

  8.   


    如果你直接用Jquery的Val来赋数组值给Input的话..Js默认应该用,来连接的呀..
    看你打印出来的格式..你直接解json不就行了?
      

  9.   

    showmessage(json_decode(iconv("GBK", "UTF-8", $str),true));
    解json输出时空白呢
      

  10.   

    1、将JS中的数组post到php程序
    由于数组不可能直接传递,所以已被转换成某种格式的字符串了。这个工作由js完成
    根据你示例的数据,采用的是 json 格式2、php 会对传入的参数做转义处理,所以入库时不需要再做转义处理
    如果已经 addslashes 了,则必须 stripslashes3、由于传入的本身就是串,所以序列化(serialize)也是不必要的4、在用 json_decode 解码时,必须保证数据是这样的
    $blog['pics']值输出为以下格式
    [{"albumid":"27785","thumb":"attachment/201203/5/5_1330951237xdG6.jpg.thumb.jpg","src":"attachment/201203/5/5_1330951237xdG6.jpg",....