【问题标题】:Creating a jSON object using php loop使用 php 循环创建 JSON 对象
【发布时间】:2014-06-06 15:12:39
【问题描述】:

我正在尝试创建一个快速对象来处理我正在制作的图表。

这是输出的样子:

[
  ['Firefox',   45.0],
  ['IE',       26.8],
  ['Safari',    8.5],
  ['Opera',     6.2],
  ['Others',   0.7]
]

我需要用来创建此数据的代码/循环:

$series = Array();
foreach($segmentData->segment as $segment){ 

    echo $segment->segmentName . ' has ' . $segment->total . '<br />';
    //Need to create the data here

}

【问题讨论】:

  • 为什么不使用json_encode?
  • 只需将一个简单的二值数组附加到您的$series 数组中?

标签: php json


【解决方案1】:

由于提供的引用数组不是对象/非关联数组,因此您无法在 PHP 中创建键,然后对其进行 json_encode。提供的参考数组只需要每个段的 2 元素数组。 只需使用 PHP 非关联数组创建数据。然后 json_encode 数据。这应该与您提供的参考数组完全匹配。

$output = array();
foreach($segmentData->segment as $segment){ 
    array_push($output, array($segment->segmentName, $segment->total));
}
header("Content-type: application/json");
echo json_encode($output);

【讨论】:

  • 这并没有创建我列出的输出:/
  • [[{"0":"SSP II"},{"0":"3"}],[{"0":"Limitations"},{"0":"2"}],[{"0":"Disputes"},{"0":"2"}],[{"0":"PSS"},{"0":"4"}],[{"0":"Debit Card"},{"0":"5"}]]
  • 奇数...这意味着您提供的变量是对象本身,而不仅仅是文本/数字。 var_dump($segment->segmentName) 和 var_dump($segment->total) 输出什么?
  • array_push($output, array((string)$segment-&gt;segmentName, (string)$segment-&gt;total)); 修复了它:)
  • 有没有办法在数值周围不包含引号? [["SSP II","3"],["Limitations","2"],["Disputes","2"],["PSS","4"],["Debit Card","5"]] 数字周围的引号把它扔掉
【解决方案2】:

要创建 json 对象,将值添加到循环中的数组中,然后使用json_enode 执行如下操作

foreach($segmentData->segment as $segment){ 

        $final[$segment->segmentName]=$segment->total;
    }

    $final = json_encode($final);

【讨论】:

    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 2013-06-10
    • 2016-11-11
    • 2015-02-23
    • 2012-03-16
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多