【问题标题】:json data into proper require multiple array format in php将 json 数据转换为正确需要 php 中的多个数组格式
【发布时间】:2015-06-12 08:02:17
【问题描述】:

我有这样的 json 响应

Array
(
    [0] => Array
        (
            [id] => 65070
            [date] => 2015-06-05
            [hour] => 0
            [total] => 18
        )

    [1] => Array
        (
            [id] => 65070
            [date] => 2015-06-05
            [hour] => 2
            [total] => 32
        )

    [2] => Array
        (
            [id] => 65070
            [date] => 2015-06-07
            [hour] => 0
            [total] => 27
        )

    [3] => Array
        (
            [id] => 65070
            [date] => 2015-06-07
            [hour] => 2
            [total] => 35
        )

    [4] => Array
        (
            [id] => 1838680
            [date] => 2015-06-05
            [hour] => 0
            [total] => 957
        )

    [5] => Array
        (
            [id] => 1838680
            [date] => 2015-06-05
            [hour] => 2
            [total] => 1266
        )

    [6] => Array
        (
            [id] => 1838680
            [date] => 2015-06-07
            [hour] => 0
            [total] => 409
        )

    [7] => Array
        (
            [id] => 1838680
            [date] => 2015-06-07
            [hour] => 2
            [total] => 1528
        )
)

我想要这样的输出

id  Hour    2015-06-05  2015-06-07  Difference
65070   0   18  27  9
65070   2   32  35  3
1838680 0   957 409 -548
1838680 2   1266    

小时不固定为 0 或 2。也可以大于 2 或 1

【问题讨论】:

  • 你有什么问题?
  • 您已经尝试过什么了吗?向我们展示您的代码。
  • $newArray = array(); $dates = 数组(); foreach($array as $entry) { if(!isset($newArray[$entry['id']])) $newArray[$entry['id']] = array(); if(!in_array($entry['date'], $dates)) array_push($dates, $entry['date']); array_push($newArray[$entry['id']], array($entry['total'], $entry['date']));回声“id”。 $日期[0] 。 “”。 $日期[1]。 “”。 “不同之处”; foreach($newArray as $id => $entry) { echo $id . “ ” . (($entry[0][1]==$dates[0]) ? $entry[0][0] . " " . $entry[1][0] : " " . $entry[ 0][0]) 。 “ ” . ((count($entry) == 2) ? $entry[1][0]-$entry[0][0] : "") ." 
    "; }
  • 这是小时不存在时的代码.. 但现在我也希望小时明智
  • edit 将代码放入问题中,因为 cmets 不保留格式,并准确解释给您带来麻烦的原因,因为这听起来很容易更改。

标签: php arrays json


【解决方案1】:

不知道写什么,是套路代码

$newArray = array(); 
$dates = array(); 

foreach($array as $entry) {
   $newArray[$entry['id']][$entry['hour']][$entry['date']]= $entry['total'];
   if(!in_array($entry['date'], $dates)) $dates[] = $entry['date'];
   }
sort($dates);

echo "id hour ". $dates[0] . " " . $dates[1] . " " . "difference"."\n";

foreach($newArray as $id => $hours)
  foreach($hours as $hour => $entry)
     echo  $id ." " . $hour  . " " 
           . $entry[$dates[0]] . " " 
           . $entry[$dates[1]] . " "
           . ($entry[$dates[1]] - $entry[$dates[0]]) . "\n";

DEMO

【讨论】:

  • 实际上是 $entry[$dates[0]] 。 “”。 $entry[$dates[1]] 。 " " 未定义
  • stackoverflow.com/questions/30679915/… 在这我得到了正确的数据,但新的要求是增加小时数
  • 它反映了什么数据?
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多