我有一个mysql查询,它在PHP中返回一个像这样的数组
array(
[0] -> ([cred_id],[date],[value]);
[1] -> ([cred_id],[date],[value]);
[2] -> ([cred_id],[date],[value]);
[3] -> ([cred_id],[date],[value]);
[4] -> ([cred_id],[date],[value]);
[5] -> ([cred_id],[date],[value]);
[6] -> ([cred_id],[date],[value]);
[7] -> ([cred_id],[date],[value]);
[8] -> ([cred_id],[date],[value]);
);
等等。 Cred_id对于不同的数组项可以是相同的。所以我想把这个数组变成这样的东西:
array(
[cred_id]->(([date],[value]),([date],[value]),([date],[value]))
[cred_id]->(([date],[value]),([date],[value]))
);
这样,如果我知道[cred_id]值,我可以在从数据库中提取的所有日期 - 值对之间进行foreach循环。
是否有我可以使用的智能PHP功能,或者我必须使用这样的foreach:
foreach ($creds as $cred){
$new_creds[$cred['cred_id']][]= array($cred[date],$cred[value]);
}
这实际上是我如何获得这个结果的最明智的想法?
答案 0 :(得分:0)
除了使用foreach进行循环外,您还可以使用array_walk或array_map功能,如下所示
$output1 = array();
array_walk($array,function($item,$key) use (&$output1){
$output1[$item['cred_id']][]=array($item['date'],$item['value']);
});
// OR
$output2 = array();
array_map(function($item) use (&$output2){
$output2[$item['cred_id']][]=array($item['date'],$item['value']);
},$array);
print_r($output1);
print_r($output2);