[英]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.