操纵多维数组

时间:2015-06-19 08:07:52

标签: php arrays multidimensional-array

我有一个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]);
}   

这实际上是我如何获得这个结果的最明智的想法?

1 个答案:

答案 0 :(得分:0)

除了使用foreach进行循环外,您还可以使用array_walkarray_map功能,如下所示

Demo

$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);