生成嵌套数组codeigniter

时间:2014-03-09 02:34:21

标签: php arrays codeigniter multidimensional-array

对于我正在处理的图表,我正在尝试生成嵌套数组。我正在查询数据库,试图从我的数据库中的某个列获取所有数据作为数组,但我不是很确定如何做到这一点。目前它给了我数据库中的最后一行。

这是我的代码:

    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

2 个答案:

答案 0 :(得分:0)

 $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);

答案 1 :(得分:0)

以下是我要做的事情,请注意我如何拍摄行并以不同的方式存储它们:

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]}}