PHP二维数组字段同月份下所在其他字段相加
<!DOCTYPE html>
<html>
<body>
<?php
$arr = array (
array (
'user_id' => '2022-02-2',
'goods_id' => 16,
'number' => 1,
),
array (
'user_id' => '2022-02-4',
'goods_id' => 12,
'number' => 3,
),
array (
'user_id' => '2022-04-4',
'goods_id' => 11,
'number' => 3,
),
array (
'user_id' => '2022-02-7',
'goods_id' => 10,
'number' => 5,
),
);
$item = array ();
foreach ( $arr as $k => $v ){
print_r( '打印键名');
//
print_r( $v [ 'user_id' ]); /*'user_id' => 数值, user_id指向 的数值打印出来 ,打印$item的键名 */
print_r( '打印$item[ 键名]所在内容');
print_r( $item [ $v [ 'user_id' ]]);
/*$item [ $v [ 'user_id' ]]=$item [键名]作为键名的数组*/
print_r( '结束');
$date=date_create($v [ 'user_id']);
$D1=date_format($date,"m");
if (!isset( $item [ $D1])){
/*$item [ $v [ 'user_id' ]] 获取的键名为$v [ 'user_id']=100的名字,即
$item [ 100]键名为100的数组,里面还是个二维数组
*/
$item [$D1]= $v ;
$item [ $D1][ 'user_id' ]= date_format($date,"Y-m");
/*
$v= Array
(
[user_id] => 100
[goods_id] => 10
[number] => 1
) 数组对应里面二维数组
*/
print_r( '打印单个$v所在的内容');
print_r( $v);
print_r( '结束');
} else {
print_r( '打印$v [number]的值');
print_r( $v [ 'number' ]);
$item [ $D1][ 'number' ]+= $v [ 'number' ];
print_r( '结束');
/*
$item [ $v [ 'user_id' ]][ 'number' ]=$item [ 键名‘比如键名为100’]下的[ 'number字段' ],再加上$v 对应数组下[ 'number' ]字段和
*/
}
}
print_r( '打印 $item内容全部');
print_r( $item );
?>
</body>
</html>
打印结果
<!DOCTYPE html>
<html>
<body>
打印键名
2022-02-2
打印$item[ 键名]所在内容
结束
打印单个$v所在的内容
Array(
[user_id] => 2022-02-2
[goods_id] => 16
[number] => 1
)
结束
打印键名2022-02-4
打印$item[ 键名]所在内容
结束
打印$v [number]的值
3
结束
打印键名
2022-04-4
打印$item[ 键名]所在内容
结束
打印单个$v所在的内容
Array(
[user_id] => 2022-04-4
[goods_id] => 11
[number] => 3
)
结束
打印键名
2022-02-7
打印$item[ 键名]所在内容
结束
打印$v [number]的值
5
结束
打印 $item内容全部
Array(
[02] =>
Array(
[user_id] => 2022-02
[goods_id] => 16
[number] => 9
)
[04] =>
Array(
[user_id] => 2022-04
[goods_id] => 11
[number] => 3
)
)
</body>
</html>