在PHP中将序列化数据加载到数组中

时间:2015-08-06 20:09:00

标签: php

我有一个用于重新排序列表的jquery插件,提供的数据是序列化的。

例如:

[{"id":13},{"id":14},{"id":15,"children":[{"id":16},{"id":17},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18}]}]

我的计划是将数据提交到php脚本,将其加载到数组中,然后将给定数据的不同部分保存在数据库的不同行中。

我在将数据加载到数组时遇到问题,我的代码如下:

<?php
$data = $_POST['data'];
echo $data . "<br /><br />";

$arr = unserialize($data);

echo var_dump($arr);

?>

但是,当尝试使用上面的数据样本运行脚本时,我收到以下错误:

  

注意:unserialize():D中的144字节偏移量0出错:第5行.......

3 个答案:

答案 0 :(得分:2)

序列化函数通常不适用于JSON。请改用json_decode()

$data = '[{"id":13},{"id":14},{"id":15,"children":[{"id":16},{"id":17},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18},{"id":18}]}]';
$json = json_decode($data, true); // true flag makes it an array instead of an object
print_r($json);

这将返回以下内容:

Array ( [0] => Array ( [id] => 13 ) [1] => Array ( [id] => 14 ) [2] => Array ( [id] => 15 [children] => Array ( [0] => Array ( [id] => 16 ) [1] => Array ( [id] => 17 ) [2] => Array ( [id] => 18 ) [3] => Array ( [id] => 18 ) [4] => Array ( [id] => 18 ) [5] => Array ( [id] => 18 ) [6] => Array ( [id] => 18 ) [7] => Array ( [id] => 18 ) [8] => Array ( [id] => 18 ) [9] => Array ( [id] => 18 ) ) ) ) 

答案 1 :(得分:1)

是的,它是json并且PHP得到了它自己的功能:

$arr = json_decode($data);

答案 2 :(得分:1)

您需要使用json_decode功能。

<?php
$data = $_POST['data'];
echo $data . "<br /><br />";

$arr = json_decode($data, true);

echo var_dump($arr);

?>

这应该适合你。