生成嵌套数组编码器



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

下面是我的代码:
    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

下面是我要做的,注意我是如何获取行并以不同于当前的方式存储它们的:

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]}
EDIT (for format):

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

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

相关内容

  • 没有找到相关文章

最新更新