❶ php中计算二维数组中某一元素之和的函数是那个啊谢谢……
PHP数组的总结(很全面啊)
一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
1array()函数声明的数
一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
<1>array()函数声明的数组的方式array([mixed...])
参数mixed的语法为key=>value
如,<?php
$array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典");
print_r($array);
echo
"<br>";
echo
$array[1];
//注意:下标默认是从0开始
echo
$array[2];
echo
$array[3];
echo
$array[4];
?>
<2>直接为数组元素赋值。如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。
如,<?php
$array[1]="I";
$array[2]="love";
$array[3]="PHP";
print_r($array);
//输出所创建数组的结构
?>
三、数组的类型
PHP支持两种数组:索引数组(indexed
array)和联合数组(associative
array),前者使用数字作为键,后者使用字符串作为键。
四、输出数组
在PHP中对数组元素输出,可以通过echo和print语句来实现,但这只能对数组中某一元素进行输出;要将数组结构输出则要使用print_r()函数,其语法:print_r(mixed
expression),参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
五、数组的构造
一维数组:
当一个数组的元素是变量时,则称其为一维数组。
声明一位数组:
类型说明符
数组名[常量表达式];
二维数组:
当一个数组的元素是一个一位数组时,则称之为二维数组。
如,<?php
$str
=
array
(
"网络编程语言"=>array
("PHP","JSP","ASP"),
"体育项目"=>array
("m"=>"足球","n"=>"篮球"));
print_r
(
$str)
;
?>
六、遍历数组
遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面介绍最常用的两种方法。
<1>使用foreach结构遍历数组;
<2>使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始。
例:综合使用list()和each()认证用户登录:
<?php
//输出用户登录信息
while(list($name,$value)=each($_POST)){
if($name!="submit"){
echo
"$name=$value<br>";
}
}
?>
七、统计数组元素个数
在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:int
coun(mixed
array[,int
mode]),其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。如,
<?php
$array
=
array("php"
=>
array("PHP函数参考大全","PHP程序开发范例宝典","PHP数据库系统开发完全手册"),
"asp"
=>
array("ASP经验技巧宝典")
);
//声明一个二维数组
echo
count($array,COUNT_RECURSIVE);//递归统计数组元素的个数,运行结果为6
?>
八、数组排序
<1>使用sort()和rsort()分别对数组进行升序和降序,如,
<?php
$array=array(5,26,37,18,9,42,88,66);
$array1=sort($array);
for($i=0;$i<count($array);$i++){
echo
$array[$i]." ";
}
echo
"<br>";
$array1=rsort($array);
for($i=0;$i<count($array);$i++){
echo
$array[$i]."  ";
}
?>
运行结果:
5
9
18
26
37
42
66
88
88
66
42
37
26
18
9
5
<2>使用ksort()和asort()对关联数组排序
如果使用了相关数组,在排序后还要保持关键字和值的排序一致,这是就需要使用ksort()和asort()函
数,如,
<?php
$array=array('php'=>1,'jsp'=>2,'asp'=>3);
ksort($array);
print_r($array);
echo
"<br>";
asort($array);
print_r($array);
?>
运行结果:
Array
(
[asp]
=>
3
[jsp]
=>
2
[php]
=>
1
)
Array
(
[php]
=>
1
[jsp]
=>
2
[asp]
=>
3
)
❷ 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等等,所以它是错的。
我对题目的理解是:数组中任意个元素的和等于某个值,把这些元素组合找出来。
如果没有理解错题意的话,我写不出来这种算法,组合太多了。
❸ 璁捐′竴涓狿HP锛屽畾涔変竴涓鍑芥暟SUM锛岃$畻涓缁存暟缁刟rray镄勫拰锛岀劧钖庤繑锲炪
<?php
function SUM($oArray){
echo array_sum($oArray);
}
$a = array ('a' => 1, 'b' => 2);
SUM($a);
?>
❹ PHP-Array函数简介-数组操作-php实例教程
count()计算数组中的元素数目或对象中的属性个数。3current()返回数组中的当前元素。3each()返回数组中当前的键/值对并将数组指针向前移动一步。3end()将数组的内部指针指向最后一个元素。3extract()从数组中将变量导入到当前的符号表。3in_array()检查数组中是否存在指定的值。4key()从关联数组中取得键名。3krsort()对数组按照键名逆向排序。3ksort()对数组按照键名排序。3list()把数组中的值赋给一些变量。3natcasesort()用“自然排序”算法对数组进行不区分大小写字母的排序。4natsort()用“自然排序”算法对数组排序。4next()将数组中的内部指针向前移动一位。3pos()current()
的别名。3prev()将数组的内部指针倒回一位。3range()建立一个包含指定范围的元素的数组。3reset()将数组的内部指针指向第一个元素。3rsort()对数组逆向排序。3shuffle()把数组中的元素按随机顺序重新排列。3sizeof()count()
的别名。3sort()对数组排序。3uasort()使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。3uksort()使用用户自定义的比较函数对数组中的键名进行排序。3usort()使用用户自定义的比较函数对数组中的值进行排序。3
❺ 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];
}
}
?>
❻ php数组如何总计总和
$testarray=array('1|物品一|6','2|物品一|10','3|物品一|3','3|物品二|6','4|物品二|3','4|物品三|4','5|物品四|1');
$result=array();
foreach($testarrayas$w){
$text=explode('|',$w);
$name=$text[1];
$num=$text[2];
$result[$name]+=$num;
}
print_r($result);
试试这个
❼ 求问php两个二维数组中每个元素的相加
//假设$a、$b是你的两个数组,下面把$b的值加到$a上
foreach($aas$k1=>$v1){
foreach($v1as$k2=>$v2)$a[$k1][$k2]+=$b[$k1][$k2];
}
❽ php数组用foreach循环后,怎么求和呢
解答过程如下:
1、$arr=array(1,2,3,5);//定义一个数组
2、$sum=0;//定义一个求和后的变量
3、foreach($arras$key=>$item){//foreach遍历数组$key是键值,$item是元素值。
4、$sum+=$item; //这句和$sum=$sum+$item;是一个意思
5、}echo$sum;//输出求和后的变量值
PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
(8)php计算数组的和扩展阅读:
关于使用php的相关事项:
1、PHP的解释运行机制:在 PHP 中,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空。
2、设计缺陷,缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。
3、对递归的不良支持:PHP并不擅长递归。它能容忍的递归函数的数量限制和其他语言比起来明显少。
❾ php 二维数组求和
你这个二位数组里面不是有这个[xiaoji]
那么就foreach一下
$sum = 0;
foreach ($array as $key => $value ){
$sum += $array[$key]['xiaoji'];
}
echo $sum;
这里$array是你的数组的名字,$sum是全部[xiaoji]的和。
如果没有这个你可以
$sum = 0;
foreach ($array as $key => $value ){
$sum += $array[$key]['consume'] * $array[$key]['settlement'];
}
echo $sum;
同样 这里$array是你的数组的名字,$sum是全部['consume'] * ['settlement']的和。
如果是直接读数据库
SELECT SUM( `consume` * `settlement`) as sum FROM your_table
your_table是你的数据表的名字 直接查询出来的就是全部['consume'] * ['settlement']的总和。
不知道你问的是不是这个意思?