次のコードをオンラインで見つけました。そして、自分のプロジェクトでそれを使用したいと思っています。
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);
(* これからコピーしました: オブジェクトを配列に変換するにはどうすればよいですか? *)