2015-08-06 4 views
-2

У меня есть плагин jquery, используемый для переупорядочения списков, данные, которые предоставляются, сериализуются.Загрузка сериализованных данных в массив в PHP

Например:

[{"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); 

?> 

Однако при попытке запустить скрипт с образцом данных выше, я получаю следующее сообщение об ошибке:

Notice: unserialize(): Error at offset 0 of 144 bytes in D:..... on line 5

+4

Похож на JSON, а не на сериализованный массив. –

+0

это могло бы объяснить, где я ошибаюсь ... плохо попробуй JSON – PaulF

ответ

1

да, это json и PHP получил это собственные функции для этого:

$arr = json_decode($data); 
2

Функции Serialize обычно не работают на 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

Вы должны использовать функцию json_decode.

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

$arr = json_decode($data, true); 

echo var_dump($arr); 

?> 

Это должно сработать для вас.