>我有一个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 ($creds as $cred){
$new_creds[$cred['cred_id']][]= array($cred[date],$cred[value]);
}
这实际上是我关于如何获得此结果的最聪明的想法?
除了使用
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);