对于我正在处理的图表,我正在尝试生成嵌套数组。我正在查询数据库,试图从我的数据库中的某个列获取所有数据作为数组,但我不是很确定如何做到这一点。目前它给了我数据库中的最后一行。
这是我的代码:
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
答案 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]}}