我需要帮助转换这个json数据数组
{"Untracked":4,"Available":3,"Groups":"4","Users":"5"}
到这种类型的json
[{"label":"Untracked","value":"4"},
{"label":"Available","value":"3"},
{"label":"Groups","value":"4"},
{"label":"Users","value":"5"}
]
我的方法是
public function graphs(){
$company_id =$this->session->userdata('itms_company_id');
$data['Untracked'] = $this->mdl_fetch->count_untracked_assets ($company_id);
$data['Available'] = $this->mdl_fetch->count_available_devices ($company_id);
$data['Groups'] = $this->mdl_fetch->count_unassigned_groups($company_id);
$data['Users'] = $this->mdl_fetch->count_unassigned_users($company_id);
echo json_encode($data);
}
试试这个:
public function graphs(){
$company_id =$this->session->userdata('itms_company_id');
$data[] = array( 'label' => 'Untracked', 'value' => $this->mdl_fetch->count_untracked_assets ($company_id));
$data[] = array( 'label' => 'Available', 'value' => $this->mdl_fetch->count_available_devices ($company_id));
$data[] = array( 'label' => 'Groups', 'value' => $this->mdl_fetch->count_unassigned_groups($company_id));
$data[] = array( 'label' => 'Users', 'value' => $this->mdl_fetch->count_unassigned_users($company_id));
echo json_encode($data);
}
这是一种方法,但似乎有点冗长。
json {}
表示您想要一个对象,因此您可以使用简单的PHP stdClass()
并添加相关属性,从mdl->fetch
返回的数组中获取数据并加载对象。然后将其添加到$data
数组中。
public function graphs(){
$company_id = $this->session->userdata('itms_company_id');
$d = $this->mdl_fetch->count_untracked_assets ($company_id);
$o = new stdClass();
$o->label = 'Untracked';
$o->value = $d['Untracked'];
$data[] = $o;
$d = $this->mdl_fetch->count_available_devices ($company_id);
$o = new stdClass();
$o->label = 'Available';
$o->value = $d['Available'];
$data[] = $o;
$d = $this->mdl_fetch->count_unassigned_groups($company_id);
$o = new stdClass();
$o->label = 'Groups';
$o->value = $d['Groups'];
$data[] = $o;
$d = $this->mdl_fetch->count_unassigned_users($company_id);
$o = new stdClass();
$o->label = 'Users';
$o->value = $d['Users'];
$data[] = $o;
echo json_encode($data);
}
这里是一个例子,它们具有相同的输出
$a = array(); <br>
$a[0]['label'] = "Untracked"; <br>
$a[0]['value'] = "4"; <br>
$a[1]['label'] = "Available"; <br>
$a[1]['value'] = "3"; <br>
$a[2]['label'] = "Groups"; <br>
$a[2]['value'] = "4"; <br>
$a[3]['label'] = "Users"; <br>
$a[3]['value'] = "3"; <br>
$json= json_encode($a); <br>
<b>Output</b> <br>
[{"label":"Untracked","value":"4"},<br>{"label":"Available","value":"3"},<br>{"label":"Groups","value":"4"},<br>{"label":"Users","value":"3"}]<br>
因此,您可以编写这样的函数:
function graphs(){
$company_id =$this->session->userdata('itms_company_id');<br>
$data[0]["lable"] = "Untracked";<br>
$data[0]['value'] = $this->mdl_fetch->count_untracked_assets ($company_id);<br>
$data[1]["lable"] = "Available";<br>
$data[1]["value"] = $this->mdl_fetch->count_available_devices ($company_id);<br>
$data[2]["lable"] = "Groups";<br>
$data[2]["lable"] = $this->mdl_fetch->count_unassigned_groups($company_id);<br>
$data[3]["lable"] = "Users";<br>
$data[3]["lable"] = $this->mdl_fetch->count_unassigned_users($company_id);<br>
echo json_encode($data);
}
无需更改整个函数。
从echo json_encode($data);
更改为return json_encode($data);
。
创建一个函数,在调用graph()
函数后将格式从一个json更改为另一个json-您可以调用另一个函数来返回json数据,就像您想要的一样
function changeFormat($js)
{
$jsArray = json_decode($js,true);
$result = array();
foreach($jsArray as $key=>$value)
{
$result[] = array("label"=>$key,"value"=>$value);
}
return json_encode($result);
}
echo changeFormat($js);