A. php数组函数序列之array_sum() - 计算数组元素值之和
array_sum()定义和用法
array_sum()
函数返回数组中所有值的总和。
如果所有值都是整数,则返回一个整数值。如果其中有一个或多个值是浮点数,则返回浮点数。
PHP
4.2.1
之前的版本修改了传入的数组本身,将其中的字符串值转换成数值(大多数情况下都转换成了零,根据具体制而定)。
语法
array_sum(array)
参数
描述
array
必需。规定输入的数组。
例子1
复制代码
代码如下:
<?php
$a=array(0=>"5",1=>"15",2=>"25");
echo
array_sum($a);
?>
输出:
45
例子2
复制代码
代码如下:
<?php
$a=array(0=>5,1=>15,2=>25);
echo
array_sum($a);
?>
输出:
45
例子3
复制代码
代码如下:
<?php
$a=array(0=>5,1=>15.5,2=>25);
echo
array_sum($a);
?>
输出:
45.5
例子4
复制代码
代码如下:
<?php
$a=array(0=>5,1=>"15s",2=>25);
echo
array_sum($a);
?>
输出:
45
例子5
复制代码
代码如下:
<?php
$a=array(0=>5,1=>"s15s",2=>25);
echo
array_sum($a);
?>
输出:
30
B. PHP数组计算 如下数组$arr,求方法随机对数组的值相加,求和为指定值:如(690),输出:405+180+105=690
<?php
$arr=[1,2,3,4,5,6,7,8,9];
/**
*根据某个值对数组中的元素进行分组
*/
functiongetGroupBySum($arr,$sum){
$len=count($arr);
$result=[];
//for1
for($i=0;$i<$len;$i++){
//for2
for($j=1;$j<$len-$i;$j++){
$tmp=array_slice($arr,$i+1,$j);
array_unshift($tmp,$arr[$i]);
if(array_sum($tmp)==$sum){
$result[]=$tmp;
}
}
//for3
for($k=$i+1;$k<$len;$k++){
if(($arr[$i]+$arr[$k])==$sum){
$result[]=[$arr[$i],$arr[$k]];
}
}
}
return$result;
}
print_r(getGroupBySum($arr,10));
打印结果:
Array
(
[0]=>Array
(
[0]=>1
[1]=>2
[2]=>3
[3]=>4
)
[1]=>Array
(
[0]=>1
[1]=>9
)
[2]=>Array
(
[0]=>2
[1]=>8
)
[3]=>Array
(
[0]=>3
[1]=>7
)
[4]=>Array
(
[0]=>4
[1]=>6
)
)
函数getGroupBySum的算法解释:
我只能解释到这里了,剩下的只可意会。
---------------------------2017/2/16/19:45--------------
下班回去的途中,仔细思考了一下,我上面的函数还没有找到 1、2、7与1、3、6等等,所以它是错的。
我对题目的理解是:数组中任意个元素的和等于某个值,把这些元素组合找出来。
如果没有理解错题意的话,我写不出来这种算法,组合太多了。
C. php中数组相加除六怎么打
//是将每个数组元素相加吗?
$ary=[1,2,3,4,5];
$number=array_sum($ary)/6;
echo$number;
D. php中定义索引数组a,求数组的和、平均值
和:array_sum($a);
平均值:array_sum($a)/count($a);
E. php两个数组相加,依据数组中某一个元素的值,如果相同,就加入该列中,怎么写
//暂时认为你的第一个数组为$a,第二个数组为$b,利用PHP的foreach循环可以实现类似功能
<?php
//首先计算哪个数组元素少,最大限度节省运算量
$ca = count($a);
$cb = count($b);
//第二个数组元素少
if ($a>=$b) {
$arr = &$a;
$typeid = $b;
//第一个数组元素少
} else {
$arr = &$b;
$typeid = $a;
}
//取得要比较的typeid数组和药赋值的title数组
$tid = array();
$title = array();
foreach ($typeid as $k => $v){
$tid[] = $v['type_id'];
$title[] = $v['title'];
}
//开始指向相加计算
foreach ($arr as $k => $v){
if (in_array($arr[$k]['type_id'], $tid)) {
$arr[$k]['title'] = $title[k];
}
}
?>
F. PHP中有没有合并数组值的函数(或者小技巧)
1. 最简单的办法:使用 +
下列的代码:
<?php
$r1 = array('a'=>1,'b'=>3,'c'=>5,'d'=>7,'e'=>9);
$r2 = array('f'=>2,'g'=>4,'h'=>6,'i'=>8,'j'=>10);
$r = $r1+$r2;
echo '<pre>';
print_r($r);
echo '</pre>';
?>
代码输出结果:
Array
(
[a] => 1
[b] => 3
[c] => 5
[d] => 7
[e] => 9
[f] => 2
[g] => 4
[h] => 6
[i] => 8
[j] => 10
)
但这种办法有个需要注意的地方:两个关键字相同的元素会只保留一个,即$r1+r2,则$r1中的数据保留,这个在特殊场合也可能刚好用上也说不定。
2. 使用array_merge() 函数:
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
代码输出结果:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)