我在 JSON 中有一个数组,我需要在 PHP 中重新创建。
{
"items": {
"category": "fruit",
"detail": [
{
"name": "apple",
"good": true
}
]
}
"moreItems": {
"category": "fruit",
"detail": [
{
"name": "banana",
"good": false
}
]
}
}
我希望使用 PHP 数组创建它,然后 json_encode 。 我尝试将上面的数组设置为一个字符串,并对其进行解码,但我没有到达任何地方。
感谢。
答案 0 :(得分:1)
$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中的实际输出
干杯!
答案 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
)
)
)
);