繁体   English   中英

生成嵌套数组codeigniter

[英]Generate nested array codeigniter

对于正在处理的图形,我正在尝试生成嵌套数组。 我正在查询数据库以尝试从数据库的某个列中获取所有数据作为数组,但是我不太确定该怎么做。 目前它给了我数据库的最后一行。

这是我的代码:

    function get_data()
{
    $this->db->select('ItemName, QuantitySold');
    $query = $this->db->get('transactions');

    $results = array();

    foreach ($query->result_array() as $row)
        {
           $row['QuantitySold'];
           $row['ItemName'];
        }

        $results = array(
            'name' => 'shirt',
            'data' => $row['QuantitySold']
            );
        $test = json_encode($results);
        echo $test;
        return $results;
}

它正在生成此结果:

    {"name":"shirt","data":"9"}

我需要它看起来像这样:

    {'name':'shirt','data':array(1, 2, 3,...)}

数据库结构: http//d.pr/i/cQaW

行: http//d.pr/i/8vp2

 $result = array();

 foreach ($query->result_array() as $row)
 {
   //if new item, initiate array in order not to get an exception
   if( !isset($result[$row['ItemName']]) ) {
     $result[$row['ItemName']]['data'] = array();
     $result[$row['ItemName']]['name'] = $row['ItemName'];
   }
   //group data by item name

   $result[$row['ItemName']]['data'][] = $row['QuantitySold'];
 }

 echo json_encode($result);

这是我要做的,请注意我如何处理行并以与当前不同的方式存储它们:

function get_data()
{
    $this->db->select('ItemName, QuantitySold');
    $query = $this->db->get('transactions');

    $results = array();

    foreach ($query->result_array() as $row)
    {
        $results[$row['ItemName']][] = $row['QuantitySold'];
    }

    $test = json_encode($results);
    echo $test;
    return $results;
}

请注意,这并不是您想要的输出,但是以这种方式处理可能会更容易。

输出示例:

{'shirt': [1, 2, 3], 'notshirt': [1, 2, 3]}

编辑(用于格式):

function get_data()
{
    $this->db->select('ItemName, QuantitySold');
    $query = $this->db->get('transactions');

    $results = array();

    foreach ($query->result_array() as $row)
    {
        if(!isset($results[$row['ItemName']]))
            $results[$row['ItemName']] = array('name' => $row['ItemName'], 'data' => array());
        $results[$row['ItemName']]['data'][] = $row['QuantitySold'];
    }

    //Rekey arrays so they aren't associative
    $results = array_values($results);

    $test = json_encode($results);
    echo $test;
    return $results;
}

输出示例:

{{name: 'shirt', data: [1, 2, 3], {'name': 'notshirt', data: [1, 2, 3]}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM