【发布时间】:2015-08-12 11:17:03
【问题描述】:
我在网上找到了以下代码。而且我很想在我自己的项目中使用它。
http://dbushell.github.io/Nestable/
这种可拖动的 jquery 生成的树结构会生成一个序列化数组。 在我看来,这是一个序列化的 javascript 数组。
[{"id":1,"children":[{"id":3}]},{"id":2,"children":[{"id":4},{"id":9,"children":[{"id":5,"children":[{"id":6},{"id":7},{"id":8}]}]}]},{"id":11},{"id":12,"children":[{"id":10}]}]
对于我能找到的,我应该使用 parse_str 并且应该这样做。
但无济于事。 生成的数组是空的。
我尝试了以下测试代码:
<?php
$Str = '[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';
parse_str($Str, $values);
print_r($values);
?>
我希望任何人都能看到我忽略的内容。
提前致谢!
回答!
我忽略的是这不是 Javascript 序列化 数组,而是一个 JSON 编码的字符串。
如下所示,我应该使用 JSON 解码。
$Str = json_decode('[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]');这将提供如下所示的结果。
如果我想将结果用作数组而不是我提供的 应使用以下函数将对象转换为有效的 数组:
function toArray($obj){ if (is_object($obj)) $obj = (array)$obj; if (is_array($obj)) { $new = array(); foreach ($obj as $key => $val) { $new[$key] = toArray($val); } } else { $new = $obj; } return $new; } $Str = toArray($Str);(* 这是我复制的: How do I convert an object to an array? *)
【问题讨论】:
-
不要那样使用。它不会遵循 json 解析的标准
标签: javascript php arrays serialization jquery-nestable