Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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中创建嵌套数组_Php_Arrays_Json_Multidimensional Array - Fatal编程技术网

如何在PHP中创建嵌套数组

如何在PHP中创建嵌套数组,php,arrays,json,multidimensional-array,Php,Arrays,Json,Multidimensional Array,我的数据集是: 我希望以以下json格式组织: data: { 'year' : 2014, 'year_data' : { 'month' : 'January', 'month_data' : { 'day' : { '1' : 100, '2' : 200, '3' : 300, '4' :

我的数据集是:

我希望以以下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);
}
我从工作表中读取数据,并将数据分为年、月和日,在不同的数组中,最后尝试编写一个数组来填充我想要的格式。但是 我正在努力从中创建嵌套数组。尝试了几种方法,但没有解决方案。有什么帮助吗

完整代码链接:


示例:

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

$array=[ 数据=>[ 年份=>2014年, 年份数据=>[ 月份=>一月, 月份数据=>[ 天=>[ 1 => 100, 2 => 200, 3 => 300, 4 => 400 ] ] ] ] ]; 然后可以将此数组转换为JSON字符串,如下所示:

json_encode$数组;
到目前为止你试过什么?如何加载数据集?您能否向我们展示您创建此阵列的尝试,并分享您遇到的问题?如果没有代码,我们如何帮助您修复代码?我将跟进El_Vanja的评论,并回应同样的评论。Stack Overflow是一个问答式社区,人们在这里提供时间和知识来帮助他人。至少你能做的,是花时间学习如何提出一个好问题,并展示你的工作,让其他人感觉他们是在真诚地帮助你学习,而不仅仅是为你工作的人。谢谢@Crayons我为我的简短问题感到抱歉。现在我更新了我的问题。请看一看。你能给我们一个$sheet内容的小样本吗?我知道这是图片中的数据,但最好能确切地知道数组的结构。@Elu Vanja请现在检查问题。我已经给出了示例和完整代码。thanksI高度怀疑OP是否在寻找手动解决方案来构建数组,这是从数据集的大小判断的。是的@crayons我正在尝试这样做,但在动态创建嵌套数组方面遇到了困难。@El_Vanja当然常识告诉我OP想要将该数据集转换为JSON对象。唉,OP没有尽力提出一个恰当的问题,因此我选择回答OP真正提出的唯一一个问题:“如何创建嵌套数组”。