I have the following array result from my PHP code.
$aa = {
"1": [
{
"ID": "1",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "images201103928128.jpg"
},
{
"ID": "1",
"IDu": "1",
"doc_picture": "no",
"doc_contract": "yes",
"doc_name": "images20110_doc.jpg"
},
{
"ID": "1",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "28128.jpg"
},
{
"ID": "1",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "i128.jpg"
}
],
"2": [
{
"ID": "2",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "i12fsdf8.jpg"
},
{
"ID": "2",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "i12fffffsdf8.jpg"
},
{
"ID": "2",
"IDu": "1",
"doc_picture": "no",
"doc_contract": "yes",
"doc_name": "dddf8_doc.jpg"
}
],
"5": [
{
"IDaut": "5",
"IDusr": "1",
"doc_picture": null,
"doc_contract": null,
"doc_name": null
}
],
"6": [
{
"ID": "6",
"IDu": "1",
"doc_picture": "no",
"doc_contract": "yes",
"doc_name": "d8_doc.jpg"
},
{
"ID": "6",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "f8.jpg"
},
{
"ID": "6",
"IDu": "1",
"doc_picture": "yes",
"doc_contract": "no",
"doc_name": "d.jpg"
},
{
"ID": "6",
"IDu": "1",
"doc_picture": "no",
"doc_contract": "yes",
"doc_name": "gg_doc.jpg"
}
]
};
As you see the only difference in each associated array is only doc_name.
what i need is like this array to be generated...
$aa = {
"1": [
{
"ID": "1",
"IDu": "1",
"doc_name": "images201103928128.jpg_picture",
"doc_name": "images20110_doc.jpg_document",
"doc_name": "28128.jpg_picture",
"doc_name": "i128.jpg_picture"
},
],
"2": [
{
"ID": "2",
"IDu": "1",
"doc_name": "i12fsdf8.jpg_picture",
"doc_name": "i12fffffsdf8.jpg_picture",
"doc_name": "dddf8_doc.jpg_document"
},
],
"5": [
{
"IDaut": "5",
"IDusr": "1",
"doc_picture": null,
"doc_contract": null,
"doc_name": null
}
],
"6": [
{
"ID": "6",
"IDu": "1",
"doc_name": "d8_doc.jpg_document",
"doc_name": "f8.jpg_picture",
"doc_name": "d.jpg_picture",
"doc_name": "gg_doc.jpg_documen"
},
]
};
Here is the PHP Code...
function get_List($ID)
{
$this->db >select('u.ID,u.IDu,d.doc_picture,
d.doc_contract,d.doc_name,
a.*');
$this->db->from('t_user u');
$this->db->join('t_doc d', 'd.ID=u.ID', 'left');
$this->db->where('u.ID',$ID);
$query = $this->db->get();
$result = $query->result_array();
$group = array();
foreach($result as $val) {
$group[$val['ID']][] = $val;
}
return $group;
}
What happened is, I just need to group according to their ID and show all the doc_name tag with its associate document type as you see above.
How could I achieve that? In PHP or Angular filter...what ever solution you suggest I will be very happy...
Thanks in Advance
I would do it like this:
$newArray = array();
foreach($aa as $key => $array) {
$ids = array();
foreach($array as $elements) {
$ukey = $elements['ID'].$elements['IDu'];
if(!isset($ids[$ukey])) $ids[$ukey] = array('ID' => $elements['ID'], 'IDu' => $elements['IDu']);
$ext = '';
if($elements['doc_picture'] === 'yes') $ext = '_picture';
else if($elements['doc_contract'] === 'yes') $ext = '_document';
$ids[$ukey]['doc_name'][] = $elements['doc_name'].$ext;
}
foreach($ids as $id) {
if(!isset($newArray[$key])) $newArray[$key] = array();
array_push($newArray[$key],$id);
}
}
// this will print out what you requested
print_r($newArray);
Some notes on this:
doc_name
keys, since keys have to be unique in arrays. Because of this, doc_name
will be an array.IDu
numbers and it will create a separate array for those (This is the behavior I would expect, since you did not write about that).I used the following array for testing (note that I added some more entries so you can see the full behavior):
$aa = array("1" => array(array("ID" => "1","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "images201103928128.jpg"),
array("ID" => "1","IDu" => "1","doc_picture" => "no","doc_contract" => "yes","doc_name" => "images20110_doc.jpg"),
array("ID" => "1","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "28128.jpg"),
array("ID" => "1","IDu" => "2","doc_picture" => "yes","doc_contract" => "no","doc_name" => "4567.jpg"),
array("ID" => "1","IDu" => "2","doc_picture" => "no","doc_contract" => "yes","doc_name" => "1234.jpg"),
array("ID" => "1","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "i128.jpg")),
"2" => array(array("ID" => "2","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "i12fsdf8.jpg"),
array("ID" => "2","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "i12fffffsdf8.jpg"),
array("ID" => "2","IDu" => "1","doc_picture" => "no","doc_contract" => "yes","doc_name" => "dddf8_doc.jpg")),
"5" => array(array("ID" => "5","IDu" => "1","doc_picture" => null,"doc_contract" => null,"doc_name" => null)),
"6" => array(array("ID" => "6","IDu" => "1","doc_picture" => "no","doc_contract" => "yes","doc_name" => "d8_doc.jpg"),
array("ID" => "6","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "f8.jpg"),
array("ID" => "6","IDu" => "1","doc_picture" => "yes","doc_contract" => "no","doc_name" => "d.jpg"),
array("ID" => "6","IDu" => "1","doc_picture" => "no","doc_contract" => "yes","doc_name" => "gg_doc.jpg")));