Преобразование JSON в массив с рекурсивным методом?
Я пытаюсь преобразовать строку JSON внутри массива в массив,
<code>$config = array( "type" => '{"category":"admin","page":"page"}', "say" => "Hello", "php" => array( "say" => "no", "type" => '{"category":"admin","page":"page"}', "gran" =>array( "name" => "Hi" ) ) ); </code>
Мой рабочий код,
<code>class objectify { public function json_to_array($array, $recursive = true) { # if $array is not an array, let's make it array with one value of former $array. if (!is_array($array)) $array = array($array); foreach($array as $key => $value) { if($recursive === false) $array[$key] = (!empty($value) && is_string($value) && json_decode($value) != NULL) ? json_decode($value, true): $value; else $array[$key] = (!empty($value) && is_string($value) && json_decode($value) != NULL) ? json_decode($value, true): is_array($value) ? self::json_to_array($array) : $value; } return $array; } } </code>
Работает нормальноwithout recursive method но ломается, когда я хочу сделатьrecursive как вы можете видеть в моем коде выше,
<code>$object = new objectify(); $config = $object->json_to_array($config); print_r($config); </code>
сообщение об ошибке,
<code>Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2048 bytes) in C:\wamp\www\test\2012\php\set_variable.php on line 79 </code>
Я просто хочу получить этот результат,
<code>Array ( [type] => Array ( [category] => admin [page] => page ) [say] => Hello ( [say] => no [type] => {"category":"admin","page":"page"} [gran] => Array ( [name] => Hi ) ) ) </code>
EDIT:
<code>$config = 'type={"category":"admin","page":"page"}&text_editor={"name":"mce-basic"}&parent_id=self&subtitle=true&description=true&content_1=true&script_1=true&primary_image=true'; parse_str($config,$array); print_r($array); </code>
результат,
<code>Array ( [type] => {"category":"admin","page":"page"} [text_editor] => {"name":"mce-basic"} [parent_id] => self [subtitle] => true [description] => true [content_1] => true [script_1] => true [primary_image] => true ) </code>