array_sum(),array_product()的使用

  这两个函数在你处理数据的时候,相信会很有用处。

一个是处理数组所有值的和,一个是所有值的乘积。写这个随笔就是强调下,有特殊的情况需要注意,以防以后的工作中,统计的时候出现错误。

举个例子:

$a = array(
    'a' => "1a12", // 1
    'b' => 1.01, // 1.01
    'c' => 1, // 1
    '3' => '1.98', // 1.98
    'qq' => '0125fck', // 125
    'zz' => '-0.09hehe', // -0.09
    'bb' => 'a9haha', // 0
    true,false, // true是1,false是0
);

var_dump(array_sum($a)); // float(130.9)
var_dump(array_product($a));//  float(-0)

 

 

这个的执行结果是: float(130.9)     float(-0)

array_sum()这个函数处理每个值时候,做了类似于intval() 和 floatval() 这样的处理。所以说这个函数并不是只对数组中的数字做处理。

处理情况:  1+ 1.01 +1 +1.98 + 125 + (- 0.09) + 0 + 1 + 0 = 130.9 ;

为什么要写+ 0 呢?再看array_product()这个的结果,就知道了。product以后结果是-0;

因为数组一个元素  'bb' => 'a9haha' , false  转化为数值就是0。所以乘积的结果也是0,当然还有个负号,就是-0。

 

再举个操作手册里的例子,数组的元素为true的时候,array_sum就是+1,false就是0:

<?php

function only_strings_in_array($arr) {
  // 这里map映射以后,返回的是is_string()函数的执行结果,那么字符串就返回true,否则就是false;
  // true执行array_sum()就是+ 1
return array_sum(array_map('is_string', $arr)) == count($arr); } $arr1 = array('one', 'two', 'three'); $arr2 = array('foo', 'bar', array()); $arr3 = array('foo', array(), 'bar'); $arr4 = array(array(), 'foo', 'bar'); var_dump( only_strings_in_array($arr1), only_strings_in_array($arr2), only_strings_in_array($arr3), only_strings_in_array($arr4) ); ?> This will give you the following result: bool(true) bool(false) bool(false) bool(false)

 

举这几个例子,就是说明下,元素特殊的情况下的处理情况。

 

转载于:https://www.cnblogs.com/firstForEver/p/5092460.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值