在php中,如何根据值将数组组合在一起?
我有以下在php中,如何根据值将数组组合在一起?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下$array: Array ( [0] => Array ( [cd] => 1675 [amt_1] => 199.50 [fname] => Joe [lname] => A ) [1] => Array ( [cd] => 1675 [amt_1] => 69.90 [fname] => Jo
$array
:
Array
(
[0] => Array
(
[cd] => 1675
[amt_1] => 199.50
[fname] => Joe
[lname] => A
)
[1] => Array
(
[cd] => 1675
[amt_1] => 69.90
[fname] => Joe
[lname] => A
)
[2] => Array
(
[cd] => 1676
[amt_1] => 69.90
[fname] => Tracy
[lname] => A
)
[3] => Array
(
[cd] => 1676
[amt_1] => 199.50
[fname] => Tracy
[lname] => A
)
...
)
我想做的是通过fname
或cd
将它们组合在一起,这样我就可以得到如下结果:
[0] => Array
(
[cd] => 1676
Array
(
[0] => Array
(
[amt_1] => 199.50
)
[1] => Array
(
[amt_1] => 69.90
)
[fname] => Joe
[lname] => A
)
[1] => Array
(
[cd] => 1676
Array
(
[0] => Array
(
[amt_1] => 199.50
)
[1] => Array
(
[amt_1] => 69.90
)
[fname] => Tracy
[lname] => A
)
........
我似乎不明白。
这不能在mysql中完成,我需要在php中完成
有什么想法吗
谢谢
编辑:我知道结果示例的格式不正确,但基本上我想要组合fname
,其余结果将它们放在数组中
编辑:
@Paulo H
有个好主意。我还发现了另一种方法,将其分组,而不是合并:
$groups = array ();
foreach ( $the_array as $item ) {
$key = $item ['fname'];
if (! isset ( $groups [$key] )) {
$groups [$key] = array ('items' => array ($item ), 'count' => 1 );
} else {
$groups [$key] ['items'] [] = $item;
$groups [$key] ['count'] += 1;
}
}
试试这个:
function &array_group_value_by($input_array,$value,$by){
$result = array();
foreach($input_array as $array){
if(!isset($result[$array[$by]])){
$result[$array[$by]] = array();
}
foreach($array as $key=>$data){
if((is_string($value) && $key==$value) || (is_array($value) && in_array($key,$value))){
if(!isset($result[$array[$by]][$key])){
$result[$array[$by]][$key] = array();
}
$result[$array[$by]][$key][] = $data;
}else{
$result[$array[$by]][$key] = $data;
}
}
}
return $result;
}
$grouped = array_group_value_by($yourarray,'amt_1','fname');
print_r($grouped);
Tracy还有,我刚刚举了一个例子,你想要的结果数组格式不正确。什么保存数组
数组(0=>array('amt\u 1'=>199.50')、1=>array('amt\u 1'=>69.90))
?特蕾西在里面会是什么样子?我编辑了一点这篇文章,也许现在是更清晰的作品,我改变了一些东西,谢谢你的想法