1. 求一个一维数组内部元素的所有可能的组合的算法用php实现
原理相当的简单,就是依次向盘子里面放abc三种水果,后面一个在前面的一堆方法基础上再依次的放,放一个盘的时候有3种放法,两个盘的时候有3*3种放法,三个盘的时候是3*3*3种放法,所以最后总数是3的5次方,也就是有243个组合。下面的代码就是体现出这种逻辑。
<?php
$fruit=array('a','b','c');
$dishes[]=range(1,5);
for($i=0;$i<5;$i++){
foreach($dishes as $k=>$v){
foreach($fruit as $_fruit){
$v[$i]=$_fruit;
$dishes[]=$v;
}
unset($dishes[$k]);
}
}
$dishes=array_values($dishes);
foreach($dishes as $k=>$v)
echo $k+1,':',implode('',$v),'<br>';
?>
2. PHP里获取一维数组里的最大值和最小值要求,效率最好,速度最快
还有什么会比PHP的方法高效?
最大的
<?php
$a=array('1','3','55','99');
$pos=array_search(max($a),$a);
echo$a[$pos];
最小的
<?php
$a=array('1','3','55','99');
$pos=array_search(min($a),$a);
echo$a[$pos];
3. 设计一个PHP,定义一个函数SUM,计算一维数组array的和,然后返回。
符合要求的函数如下:‘
function SUM($arr){
for($i = 0, $iLen = count($arr), $sum = 0; $i < iLen; $sum += $arr[$i++]);
return $sum;
}解释:
1.
count函数用于求数组的长度
2.
在for的初始条件中,定义了$sum变量,然后遍历数组
3.
在循环体中无任何语句,计算相加结果写到了for的第3个参数中
4.
最终返回$sum的值
说明:
PHP中自带数组求和函数array_sum,此题中要求自定义实现,故不考虑系统函数。
4. PHP里获取一维数组里的最大值和最小值要求,效率最好,速度最快
还有什么会比PHP的方法高效?
最大的
<?php
$a=array('1','3','55','99');
$pos=array_search(max($a),$a);
echo$a[$pos];
最小的
<?php
$a=array('银陆或1'锋伍,'悉扒3','55','99');
$pos=array_search(min($a),$a);
echo$a[$pos];
5. php获取一维数组key的总和
返回数组中所有的key值:
$keys = array_keys($array)
2.求出总和:
$sum=array_sum($keys)
$sum为所有key的总和
6. 在PHP中一个二维数组中的一维数组的让键名相同的 键值相加
不太清楚你的需求,array_push() 函数向第一个参数的数组尾部添加一个或多个元素,你可以定义一个数组,然后把两个数组合并一块,例如:$a=array('id'=1,'name'='n');$b=array('id'=2,'name'='m');$c=array();array_push($c,$a,$b);
7. PHP问题:有个一维数组,共有9个元素,下标是不同的字符串,用什么方法获取前三个元素之和
$a2 = array_splice($a1, 0, 3);
var_mp(array_sum($a));
$a2 = array_splice($a1, -3, 3);
var_mp(array_sum($a));
8. php 对两个下标一样的一维数组,键值按公式计算合成一维数组的方法
<?php
//两个数组,下标一样的情况下,键值按公式计算 环比值 = (本期数 - 上期数)/上期数*100%
public function array_add($a,$b){
//根据键名获取两个数组的交集
$arr=array_intersect_key($a,$b);
//遍历第二个数组,如果键名不存在与第一个数组,将数组元素增加到第一个数组
foreach($bas$key=>$value){
if(!array_key_exists($key,$a)){
$a[$key]=$value;
}
}
//计算键名相同的数组元素的和,并且替换原数组中相同键名所对应的元素值
foreach($arras$key=>$value){
$a[$key] = ($b[$key] !=0) ? floatval(sprintf("%.2f",($a[$key] -$b[$key])/$b[$key]*100)) :0;
}
//返回相加后的数组
return$a;
}