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;
}