Php 多维数组中的和值?
我只是不知道如何在多维数组中求和和和回显值。这是我的数组,包含有关订单的信息 我需要对结果值求和,并返回一个统一的描述列表。我尝试过很多东西,但什么都没有,从来没有用过那种数组级别。这是一个包含两种不同产品并提供折扣的阵列Php 多维数组中的和值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我只是不知道如何在多维数组中求和和和回显值。这是我的数组,包含有关订单的信息 我需要对结果值求和,并返回一个统一的描述列表。我尝试过很多东西,但什么都没有,从来没有用过那种数组级别。这是一个包含两种不同产品并提供折扣的阵列 Array ( [0] => Array ( [ORDER_ID] => 35 [DISCOUNT_ID] => 18 [ORDER_COUPON_ID] =&g
Array
(
[0] => Array
(
[ORDER_ID] => 35
[DISCOUNT_ID] => 18
[ORDER_COUPON_ID] => 0
[COUPON_ID] =>
[RESULT] => Array
(
[BASKET] => Array
(
[617] => Array
(
[RULE_ID] => 248
[APPLY] => Y
[RULE_DESCR_ID] => 248
[ACTION_BLOCK_LIST] => Array
(
[0] => 0
)
[DESCR_DATA] => Array
(
[0] => Array
(
[TYPE] => 2
[VALUE] => 10
[VALUE_TYPE] => P
[VALUE_ACTION] => D
[RESULT_VALUE] => 229.905
[RESULT_UNIT] => RUB
)
)
[DESCR] => Array
(
[0] => discount 10% (229.91 rub.)
)
[DESCR_ID] => 248
[BASKET_ID] => 617
[MODULE] => catalog
[PRODUCT_ID] => 10109
)
[618] => Array
(
[RULE_ID] => 249
[APPLY] => Y
[RULE_DESCR_ID] => 249
[ACTION_BLOCK_LIST] => Array
(
[0] => 0
)
[DESCR_DATA] => Array
(
[0] => Array
(
[TYPE] => 2
[VALUE] => 10
[VALUE_TYPE] => P
[VALUE_ACTION] => D
[RESULT_VALUE] => 70.796
[RESULT_UNIT] => RUB
)
)
[DESCR] => Array
(
[0] => discount 10% (70.80 rub.)
)
[DESCR_ID] => 249
[BASKET_ID] => 618
[MODULE] => catalog
[PRODUCT_ID] => 10054
)
)
)
[ACTION_BLOCK_LIST] => 1
)
您可以使用array\u sum和array\u column Array\u column从数组中的一列获取所有值,Array\u sum。。。总而言之
echo array_sum(array_column($arr, "RESULT_VALUE"));
此解决方案有效?您可以使用它来获得结果。下面的代码将key$key的所有值相加,无论它们位于数组中的何处
$key = 'RESULT_VALUE';
$sum = 0;
array_walk_recursive ($array,
function($v, $k, $key) use (&$sum) {
if($k === $key) { $sum += $v;}},
$key);
echo $sum;
我试过很多东西,但都没用,从来没用过,是吗?这里有很多类似的问题,所以:,你说echo one united DESCR list是什么意思?数组中没有键,只有DESCR或DESCRlist@Andreas,我的意思是我需要回显带有键DESCR的单元格,它应该是这样的:折扣10%。。。。折扣10%…错误反转数组\u列参数谢谢!我会解决它。@Hazzy,我以为你会将$arr更改为数组名。你这么做了吗?@Andreas,当然是echo array\u sumarray\u column$res,RESULT\u VALUE;打印列$res[ORDER],DESCR;数组也是空的。谢谢,它的工作方式不正确,例如我做这个是为了观察值$键='RESULT_VALUE'$总和=0;数组_walk_recursive$res[ORDER][0],函数$v,$k,$key use&$sum{if$k===$key{echo$k.-.$v.;}},$key;echo$sum;回响我们得到的是:00-0结果值229.905 0-10%折扣229.91卢布。0-0结果值-70.796 0-10%折扣70.80卢布。0Oh,当我更改一个条件时,它会起作用,例如,如果$k==$key&&$k!==0,为什么答案中的条件是包含一个键为0的单元格?因为当与int-write f$k==$key比较时,php将字符串转换为零
$key = 'RESULT_VALUE';
$sum = 0;
array_walk_recursive ($array,
function($v, $k, $key) use (&$sum) {
if($k === $key) { $sum += $v;}},
$key);
echo $sum;