【问题标题】:How to Create Nested Array PHP如何创建嵌套数组 PHP
【发布时间】:2020-06-26 22:07:24
【问题描述】:

我的数据集是:

我想以以下 json 格式组织:

data: {
    'year' : 2014,
    'year_data' : {
        'month' : 'January',
        'month_data' : {
            'day' : {
                '1' : 100,
                '2' : 200,
                '3' : 300,
                '4' : 400,
            }
        }
    }
}

这是我的方法:

function sheetData($data, $sheet) {
    echo "<pre>";
    $years = ['2014', '2015', '2016', '2017', '2018'];
    $months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 
    'August', 'September', 'October', 'November', 'December'];

    $x = 1; 
    $segment = 0;
    $segment_end = 11;
    $year_count = 0;
    $calc_years = [];
    $calc_months = [];
    while($x <= $sheet['numRows']) {
        $y = 3;
        if ($segment == $segment_end) { 
            $calc_months[$segment] = $months[$segment];
            $segment = 0;
            $calc_years[$year_count] = $years[$year_count];
            $year_count++;
        } else { 
            $calc_months[$segment] = $months[$segment];
            $segment++;
        }
        $col = 0;
        while($y <= $sheet['numCols']) {
            $cell = isset($sheet['cells'][$x][$y]) ? $sheet['cells'][$x][$y] : '';
            $calc_days[$col] =  $cell;
            $y++;
            $col++;
        }  
        $x++;
    }

    $data_year = array();
    $data_month = array();
    $data_day = array();
    $data_array = array();
    $count = 0;

    $count_years = count($calc_years);
    $count_months = count($calc_months);
    $count_days = count($calc_days);

    for ($p=0; $p < $count_years ; $p++) { 
      $data_array[$p]['year'] = $calc_years[$p];
      for ($q=0; $q < $count_months; $q++) {
        $data_array[$p]['year_data'][$q]['month'] = $calc_months[$q];
        for ($r=0; $r < $count_days; $r++) {
          $data_array[$p]['year_data'][$q]['month']['day'][$r] = $calc_days[$r];
        }
      }

    }

    var_dump($data_array);
}

我从工作表中读取数据并在单独的数组中分段为年、月和日,最后尝试编写一个数组来填充我想要的格式。但 我正在努力从中创建嵌套数组。尝试了多种方法,但没有解决方案。有什么帮助吗?

完整代码链接:enter link description here

示例:https://drive.google.com/open?id=1NDpd0-sEMn47JDfhMagAjRnr_MemZttA

【问题讨论】:

  • 到目前为止你尝试过什么?你是如何加载你的数据集的?您能否向我们展示您创建此数组的尝试并分享您遇到的问题?如果没有代码,我们如何帮助您修复代码?
  • 我将通过回应 El_Vanja 的评论来跟进。 Stack Overflow 是一个问答社区,人们在这里提供时间和知识来帮助他人。您至少可以花时间学习如何提出一个好问题,并展示您的工作,以便其他人可以感觉到他们是在真正帮助您学习,而不仅仅是为您工作的人。 stackoverflow.com/help/how-to-ask
  • 感谢@Crayons 很抱歉我的简短问题。现在我更新了我的问题。请看一下。
  • 你能给我们一个$sheet内容的小样本吗(我知道这是图片中的数据,但最好知道该数组的确切结构)。
  • @El_Vanja 请立即检查问题。我已经给出了示例和完整的代码。谢谢

标签: php arrays json multidimensional-array


【解决方案1】:

我发现在 PHP 中使用方括号数组表示法最简单:

$array = [
  "data" => [
    "year" => 2014,
    "year_data" => [
      "month" => "January",
      "month_data" => [
        "day" => [
          "1" => 100,
          "2" => 200,
          "3" => 300,
          "4" => 400
        ]
      ]
    ]
  ]
];

然后您可以将此数组转换为 JSON 字符串,如下所示:

json_encode($array);

【讨论】:

  • 从数据集的大小来看,我非常怀疑 OP 是否正在寻找构建数组的手动解决方案。
  • 是的@crayons,我正在尝试这样做,但在动态创建嵌套数组时遇到了困难。
  • @El_Vanja 当然常识告诉我 OP 想要将该数据集转换为 JSON 对象。唉,OP 未能努力提出正确的问题,因此我选择回答 OP 实际提出的唯一问题:“如何创建嵌套数组”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2023-02-25
  • 1970-01-01
相关资源
最近更新 更多