如何在PHP中重新创建此JSON数组?

时间:2015-06-06 16:25:00

标签: php arrays

我在 JSON 中有一个数组,我需要在 PHP 中重新创建。

         {
            "items": {
              "category": "fruit",
              "detail": [
                {
                  "name": "apple",
                  "good": true
                }
              ]
            }
            "moreItems": {
              "category": "fruit",
              "detail": [
                {
                  "name": "banana",
                  "good": false
                }
              ]
            }
        }

我希望使用 PHP 数组创建它,然后 json_encode 。 我尝试将上面的数组设置为一个字符串,并对其进行解码,但我没有到达任何地方。

感谢。

3 个答案:

答案 0 :(得分:1)

PHP中的

$arr = array("items" => array(
                  0 => array (
                     "category" => "fruit",
                     "detail" => array("name" => "apple", "good" => true )
                     )
                 ),
             "moreItems" => array( 
                  0 => array (
                     "category" => "fruit",
                     "detail" => array("name" => "banana", "good" => false)
                     )
                 )
            );

或用于手动分配,如果使用循环可能有用:

$arr["items"]["category"] = "fruit";
$arr["items"]["detail"][0]["name"] = "apple";
$arr["items"]["detail"][0]["good"] = true;

$arr["moreItems"]["category"] = "fruit";
$arr["moreItems"]["detail"][0]["name"] = "banana";
$arr["moreItems"]["detail"][0]["good"] = false;

echo json_encode($arr);

会给你相同的输出..

JSON中的实际输出

enter image description here

干杯!

答案 1 :(得分:1)

如果你有一个json(在PHP中)作为字符串,并且你想将它们转换为本机PHP数组,你可以很容易地做到这一点:

<?php
    function objectToArray( $object )
    {
        if( !is_object( $object ) && !is_array( $object ) )
        {
            return $object;
        }
        if( is_object( $object ) )
        {
            $object = get_object_vars( $object );
        }
        return array_map( 'objectToArray', $object );
    }

    $json = '{\
        "items": {\
          "category": "fruit",\
          "detail": [\
            {\
              "name": "apple",\
              "good": true\
            }\
          ]\
        }\
        "moreItems": {\
          "category": "fruit",\
          "detail": [\
            {\
              "name": "banana",\
              "good": false\
            }\
          ]\
        }\
    }';

    $array = objectToArray( json_decode($json) );
    echo "<pre>".print_r($array, true)."</pre>";

就是这样!

答案 2 :(得分:0)

感谢 Michael Berkowski ,这对我有用。您可以在下面的代码中重新创建嵌套的[]。

  

如果您想更真实地复制结构,请强制使用PHP   stdClass对象而不是assoc数组,你可能会强制转换内部   对象:'detail'=&gt; array(0 =&gt;(object)array('name'=&gt;   'banana','good'=&gt;假))

以下这个对我来说没问题。

           $phpArray = array(
                "items" => array(
                    "category" => "fruit",
                    "detail" => array(
                        0 => array(
                            "name" => "apple", "good" => true
                        )
                    )
                ),
                "moreItems" => array(
                    "category" => "fruit",
                    "detail" => array(
                        0 => array(
                            "name" => "banana",
                            "good" => false
                        )
                    )
                )
            );