程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php常用算法總匯大全

php常用算法總匯大全

編輯:PHP基礎知識
 

—————————- 多選分類修改,數據入庫增刪留數組:兩個數組的對比分析

/*
多選分類修改,數據入庫增刪留數組

說明:$k 和$v 是一一對應
*/

//舊分類
$a1=array(’1′=>’雜文’,
’2′=>’小說’,
’3′=>’散文’
);
//新分類
$a2=array(’3′=>’散文’,
’4′=>’詩歌’,
’6′=>’文學’
);

foreach($a1 as $k => $v)
{
$have=”;
foreach($a2 as $ks => $vs)
{
echo “$v==$vs..”;
if($v==$vs)
{
$have=1;
}
if(!array_key_exists($ks,$a1))
{
$add[$ks]=$vs;
}
}

if($have)
{
$bao[$k]=$v;
}else
{
$del[$k]=$v;
}
}
var_dump($add);//新增的記錄
var_dump($del);//刪除的記錄
var_dump($bao);//保留的記錄

方式二:無key

//舊分類
$a1=array(‘雜文’,’小說’,’散文’);
//新分類
$a2=array(‘散文’,’詩歌’,’文學’);

foreach($a1 as $k => $v)
{
$have=”;
foreach($a2 as $ks => $vs)
{
echo “$v==$vs..”;
if($v==$vs)
{
$have=1;
}
if(!in_array($vs, $a1))
{
$add[$vs]=$vs;
}
}

if($have)
{
$bao[]=$v;
}else
{
$del[]=$v;
}
}
var_dump($add);//新增的記錄
var_dump($del);//刪除的記錄
var_dump($bao);//保留的記錄

—————————- 比較全的隨機數(字)

class getRandstrClass{
function getCode ($length = 32, $mode = 0) {
switch ($mode) {
case ’1′:
$str = ’1234567890′;
break;
case ’2′:
$str = ‘abcdefghijklmnopqrstuvwxyz’;
break;
case ’3′:
$str = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
break;
case ’4′:
$str = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz’;
break;
case ’5′:
$str = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890′;
break;
case ’6′:
$str = ‘abcdefghijklmnopqrstuvwxyz1234567890′;
break;
default:
$str = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890′;
break;
}
$randString = ”;
$len = strlen($str)-1;
for($i = 0;$i < $length;$i ++){
$num = mt_rand(0, $len);
$randString .= $str[$num];
}
return $randString ;
}
}

$code = new getRandstrClass();
$length = 16;
$mode = 1;
$str = $code->getCode($length, $mode);
echo $str;
$code = NULL;

———————–有兩個數值型變量 $a ,$b ,請在不使用用第二個變量的情況下交換它們的值
$a=3;
$b=4;

$a=$a+$b;
$b=$a-$b;
$a=$a-$b;

//list($b, $a) = array($a, $b);

————————–【選擇排序(一維數組)】
【基本思想】:每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的數據元素排完。
【示例】:
[初始關鍵字] [49 38 65 97 76 13 27 49]
第一趟排序後 13 [38 65 97 76 49 27 49]
第二趟排序後 13 27 [65 97 76 49 38 49]
第三趟排序後 13 27 38 [97 76 49 65 49]
第四趟排序後 13 27 38 49 [49 97 65 76]
第五趟排序後 13 27 38 49 49 [97 97 76]
第六趟排序後 13 27 38 49 49 76 [76 97]
第七趟排序後 13 27 38 49 49 76 76 [ 97]
最後排序結果 13 27 38 49 49 76 76 97
*/
function select_sort($arr){
$count = count($arr);
for($i=0; $i<$count; $i++){
$k = $i;
for($j=$i+1; $j<$count; $j++){
if ($arr[$k] > $arr[$j])
$k = $j;
}

//最小元素k和i調換
if($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
return $arr;
}

————————–【插入排序(一維數組)】
【基本思想】:每次將一個待排序的數據元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序;直到待排序數據元素全部插入完為止。
【示例】:
[初始關鍵字] [49] 38 65 97 76 13 27 49
J=2(38) [38 49] 65 97 76 13 27 49
J=3(65) [38 49 65] 97 76 13 27 49
J=4(97) [38 49 65 97] 76 13 27 49
J=5(76) [38 49 65 76 97] 13 27 49
J=6(13) [13 38 49 65 76 97] 27 49
J=7(27) [13 27 38 49 65 76 97] 49
J=8(49) [13 27 38 49 49 65 76 97]
*/
function insert_sort($arr){
$count = count($arr);
for($i=1; $i<$count; $i++){  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved