php 二维数组怎么取到里边的值并且求和

一种方法:

<?php
$arr = array(
	array(
		'id'=>2,
		'img'=>'upload/10.jpg',
		'name'=>'1111',
		'num'=>4,
		'ptol'=>444
	),
	array(
		'id'=>1,
		'img'=>'upload/10.jpg',
		'name'=>'产品1',
		'num'=>2,
		'ptol'=>20
	)
);

$sum = $arr[0]['ptol'] + $arr[1]['ptol'];
echo $sum;
// 输出 464
?> 

如果还有更多...
$sum = 0;
for($i = 0; $i < count($arr); $i++) {
	$sum += $arr[$i]['ptol'];
}
echo $sum;

另一种方法:

得到指点,用到array_column()函数,但是这个函数要求必须是php5.5的,所以我们要做兼容

if(!function_exists('array_column')){
    function array_column($input, $columnKey, $indexKey=null){
        $columnKeyIsNumber      = (is_numeric($columnKey)) ? true : false;
        $indexKeyIsNull         = (is_null($indexKey)) ? true : false;
        $indexKeyIsNumber       = (is_numeric($indexKey)) ? true : false;
        $result                 = array();
        foreach((array)$input as $key=>$row){
            if($columnKeyIsNumber){
                $tmp            = array_slice($row, $columnKey, 1);
                $tmp            = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;
            }else{
                $tmp            = isset($row[$columnKey]) ? $row[$columnKey] : null;
            }
            if(!$indexKeyIsNull){
                if($indexKeyIsNumber){
                    $key        = array_slice($row, $indexKey, 1);
                    $key        = (is_array($key) && !empty($key)) ? current($key) : null;
                    $key        = is_null($key) ? 0 : $key;
                }else{
                    $key        = isset($row[$indexKey]) ? $row[$indexKey] : 0;
                }
            }
            $result[$key]       = $tmp;
        }
        return $result;
    }
}

这一部分值兼容所用的内容,我们直接调用

$arr = array(
    array(
        'id'=>2,
        'img'=>'upload/10.jpg',
        'name'=>'1111',
        'num'=>4,
        'ptol'=>444
    ),
    array(
        'id'=>1,
        'img'=>'upload/10.jpg',
        'name'=>'产品1',
        'num'=>2,
        'ptol'=>20
    )
);

 $sum1=array_column($arr,'ptol');
 print_r($sum1);
 $sum2=array_sum(array_column($arr,'ptol'));
 echo $sum2;

结果是:

Array
(
    [0] => 444
    [1] => 20
)
464

这个都是自己测试的结果,亲们可以试下的

转载于:https://my.oschina.net/meng527/blog/540378

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值