Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php将这个多维数组转换为正确的JSON?_Php_Xml_Arrays_Json_Multidimensional Array - Fatal编程技术网

如何使用php将这个多维数组转换为正确的JSON?

如何使用php将这个多维数组转换为正确的JSON?,php,xml,arrays,json,multidimensional-array,Php,Xml,Arrays,Json,Multidimensional Array,我有一个包含多个图书条目的数组。我存储每个books元素,每个元素中都有其唯一的id作为键。我正在努力从中生成正确的JSON 当我对数组进行json_编码时,它只生成每个子数组json,而不是按键对元素进行分组,而是按元素所在的数组进行分组 这是我的多维数组 $booksarray = array("book title" => array(), "book isbn" => array(), "book borrowedcount" => array()); 我完全不知道如

我有一个包含多个图书条目的数组。我存储每个books元素,每个元素中都有其唯一的id作为键。我正在努力从中生成正确的JSON

当我对数组进行json_编码时,它只生成每个子数组json,而不是按键对元素进行分组,而是按元素所在的数组进行分组

这是我的多维数组

$booksarray = array("book title" => array(), "book isbn" => array(), "book borrowedcount" => array());
我完全不知道如何从每个子数组中提取元素,然后将它们组合在一起,以便它们输出类似

{"results": 
 {"course": "CC120", "books": 
   { "book": 
     [{"id": "12345", "title": "javascript", "isbn": "123456789", "borrowedcount": "45"}] } }
我的XML输出如下

<results>
 <course>cc120</course>
  <books>
   <book id="9876" title="html" isbn="000001234" borrowedcount="56">
   <book id="12345" title="javascript" isbn="123456789" borrowedcount="45">
   <book id="222" title="php5" isbn="55555555" borrowedcount="22">
   <book id="23788" title="XML" isbn="99988877" borrowedcount="5">
  </books>
</results>

cc120

任何帮助都将不胜感激

您的阵列似乎不是您首先希望的格式。一旦php数组的结构与您希望json的结构相同,json_编码就可以工作了

e、 g


看起来您的数组的格式与您希望的格式不符。一旦php数组的结构与您希望json的结构相同,json_编码就可以工作了

e、 g


我认为问题可能在于您构建阵列的方式。你能改变它吗

我建议采用如下数组结构:

$booksarray = array(
    "9876" => array(
         "title" => "html",
         "isbn" => "000001234", 
         "borrowedcount" => "56"
    ),
    "12345" => array(
         "title" => "javascript",
         "isbn" => "123456789", 
         "borrowedcount" => "45"
    )
);
json_encode()然后应该以您想要的格式输出

例如


我认为问题可能在于您构建阵列的方式。你能改变它吗

我建议采用如下数组结构:

$booksarray = array(
    "9876" => array(
         "title" => "html",
         "isbn" => "000001234", 
         "borrowedcount" => "56"
    ),
    "12345" => array(
         "title" => "javascript",
         "isbn" => "123456789", 
         "borrowedcount" => "45"
    )
);
json_encode()然后应该以您想要的格式输出

例如


将数组转换为所需格式,然后
json\u encode()
it:

$newArray = array();

foreach($booksarray["book title"] as $key => $title)
{
    $newArray[] = array(
        'id' => $key,
        'title' => $title,
        'isbn' => $booksarray["book isbn"][$key],
        'borrowedcount' => $booksarray["book borrowedcount"][$key]
    );
}

echo json_encode($newArray);

将数组转换为所需格式,然后
json\u encode()
it:

$newArray = array();

foreach($booksarray["book title"] as $key => $title)
{
    $newArray[] = array(
        'id' => $key,
        'title' => $title,
        'isbn' => $booksarray["book isbn"][$key],
        'borrowedcount' => $booksarray["book borrowedcount"][$key]
    );
}

echo json_encode($newArray);

json\u encode()
不起作用吗?最简单的方法是将php数组转换成正确的格式,然后进行json_编码。您可以向我们展示子数组吗?
json_编码()
不起作用吗?最简单的方法是将php数组转换成正确的格式,然后进行json_编码。你能告诉我们子数组吗?我认为最好使用ISBN作为循环的“权威”源。谢谢你,这非常有效。我的阵列知识肯定需要工作,但非常感谢您的回答@NathanBarton没问题:)@prodigitalson除非有没有书名但有ISBN的书,否则不会有什么不同。在任何情况下,更好的解决方案是最初将其解析为所需的格式,而不是解析为三个数组然后重新格式化。我认为最好使用ISBN作为循环的“权威”源。谢谢,这非常有效。我的阵列知识肯定需要工作,但非常感谢您的回答@NathanBarton没问题:)@prodigitalson除非有没有书名但有ISBN的书,否则不会有什么不同。在任何情况下,更好的解决方案是最初将其解析为所需的格式,而不是解析为三个数组然后重新格式化。我误读了您想要的输出格式,jchapa的响应可能是实现这一点的最干净的方法。我误读了您想要的输出格式,jchapa的回应可能是实现这一目标最干净的方式。