PHP 数组相同字段所在其他字段相加
<!DOCTYPE html>
<html>
<body>
<?php
$arr = array (
array (
'user_id' => 100,
'goods_id' => 10,
'number' => 1,
),
array (
'user_id' => 100,
'goods_id' => 10,
'number' => 3,
),
array (
'user_id' => 100,
'goods_id' => 10,
'number' => 3,
),
array (
'user_id' => 10,
'goods_id' => 10,
'number' => 5,
),
);
$item = array ();
foreach ( $arr as $k => $v ){
print_r( 'AAAAA');
//
print_r( $v [ 'user_id' ]); /*'user_id' => 数值, user_id指向 的数值打印出来 */
print_r( 'BBBBB');
print_r( $item [ $v [ 'user_id' ]]);
/*$item [ $v [ 'user_id' ]]=$item [键名]作为键名的数组*/
print_r( 'CCC');
if (!isset( $item [ $v [ 'user_id' ]])){
/*$item [ $v [ 'user_id' ]] 获取的键名为$v [ 'user_id']=100的名字,即
$item [ 100]键名为100的数组,里面还是个二维数组
*/
$item [ $v [ 'user_id' ]]= $v ;
/*
$v= Array
(
[user_id] => 100
[goods_id] => 10
[number] => 1
) 数组对应里面二维数组
*/
print_r( 'QQQ');
print_r( $v);
print_r( 'PPPP');
} else {
print_r( 'JJJJ');
print_r( $v [ 'number' ]);
$item [ $v [ 'user_id' ]][ 'number' ]+= $v [ 'number' ];
print_r( 'IIIII');
/*
$item [ $v [ 'user_id' ]][ 'number' ]=$item [ 键名‘比如键名为100’]下的[ 'number字段' ],再加上$v 对应数组下[ 'number' ]字段和
*/
}
}
print_r( $item );
?>
</body>
</html>
输出结果
<!DOCTYPE html><html><body>
AAAAA
100
BBBBB
CCC
QQQ
Array(
[user_id] => 100
[goods_id] => 10
[number] => 1
)
PPPP
AAAAA
100
BBBBB
Array(
[user_id] => 100
[goods_id] => 10
[number] => 1
)
CCC
JJJJ
3
IIIII
AAAAA
100
BBBBB
Array(
[user_id] => 100
[goods_id] => 10
[number] => 4
)
CCC
JJJJ
3
IIIII
AAAAA
10
BBBBB
CCC
QQQ
Array(
[user_id] => 10[goods_id] => 10
[number] => 5
)
PPPP
Array(
[100] => Array(
[user_id] => 100
[goods_id] => 10
[number] => 7
)
[10] => Array
(
[user_id] => 10
[goods_id] => 10
[number] => 5
)
)
</body></html>