PHP经典算法

1、冒泡排序

 1 /**
 2  * 冒泡排序
 3  * @param $array
 4  * @return string
 5  */
 6 function bubble_sort($array)
 7 {
 8     if (empty($array)) {
 9         return 'empty';
10     }
11     $length = count($array);
12     for ($i = 0; $i < $length; $i++) {
13         for ($j = $length - 1; $j > 0; $j--) {
14             if ($array[$j] < $array[$j - 1]) {
15                 $temp = $array[$j];
16                 $array[$j] = $array[$j - 1];
17                 $array[$j - 1] = $temp;
18             }
19         }
20     }
21     return $array;
22 }
冒泡排序

2、计算字符串长度

 1 /**
 2  * 计算字符串长度 (即PHP内置函数 strlen)
 3  * @link http://php.net/manual/en/function.strlen.php
 4  * @param $str
 5  * @return int
 6  */
 7 function strlen($str)
 8 {
 9     if ($str == '') {
10         return 0;
11     }
12     $count = 0;
13     while (1) {
14         if (isset($str{$count})) {
15             $count++;
16             continue;
17         } else {
18             break;
19         }
20     }
21     return $count;
22 }
字符串长度

3、截取字符串

 1 /**
 2  * 截取字符串 (即PHP内置函数 substr)
 3  * @link http://php.net/manual/en/function.substr.php
 4  * @param $str 字符串
 5  * @param $start 开始位置 start为负,从末端开始
 6  * @param null $sublen 截取长度 sublen为负,从末端开始
 7  * @return string|void
 8  */
 9 function substr($str, $start, $sublen = null)
10 {
11     //字符串为空或者开始截取位置超过字符串长度,则返回空
12     if ($str == '' || $start >= strlen($str)) {
13         return false;
14     }
15     $substr = '';
16     $length = strlen($str);
17     if ($sublen > 0) {
18         if ($start >= 0) {
19             for ($i = $start; $i < $start + $sublen; $i++) {
20                 if (!isset($str{$i})) break;
21                 $substr .= $str{$i};
22             }
23         } else {
24             for ($i = $length + $start; $i < $length + $start + $sublen; $i++) {
25                 if (!isset($str{$i})) break;
26                 $substr .= $str{$i};
27             }
28         }
29     }else {
30         if ($start >= 0) {
31             for ($i = $start; $i < $length + $sublen; $i++) {
32                 $substr .= $str{$i};
33             }
34         } else {
35             for ($i = $length + $start; $i < $length + $sublen; $i++) {
36                 $substr .= $str{$i};
37             }
38         }
39     }
40     return $substr;
41 }
截取字符串

 4、字符串翻转

 1 /**
 2  * 字符串翻转 (即PHP内置函数 strrev)
 3  * @link http://php.net/manual/en/function.strrev.php
 4  * @param $str
 5  * @return string
 6  */
 7 function strrev($str)
 8 {
 9     if ($str == '') return '';
10     $rev_str = '';
11     for ($i = (strlen($str) - 1); $i >= 0; $i--) {
12         $rev_str .= $str{$i};
13     }
14     return $rev_str;
15 }
字符串翻转

5、字符串比较

 1 /**
 2  * 字符串比较 (即PHP内置函数 strcmp)
 3  * Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
 4  * @link http://php.net/manual/en/function.strcmp.php
 5  * @param $arr1
 6  * @param $arr2
 7  * @return int
 8  */
 9 function strcmp($arr1, $arr2) {
10     if (empty($arr1)) {
11         return -strlen($arr2);
12     }
13     if (empty($arr2)) {
14         return strlen($arr1);
15     }
16     for ($i = 0; $i < strlen($arr1); $i++) {
17         if ($arr1{$i} == $arr2{$i}) {
18             continue;
19         } else {
20             if ($arr1{$i} > $arr2{$i}) {
21                 return 1;
22             } else {
23                 return -1;
24             }
25         }
26     }
27     return 0;
28 }
字符串比较

6、查找字符串

 1 /**
 2  * 查找字符串 (即PHP内置函数 strstr)
 3  * @link http://php.net/manual/en/function.strstr.php
 4  * @param $str
 5  * @param $substr
 6  * @param bool $before PHP 5.3新增参数,默认false,返回字符串剩余部分(从匹配点开始),true返回匹配点之前的字符串
 7  * @return bool|string
 8  */
 9 function strstr($str, $substr, $before = false) {
10     $m = strlen($str);
11     $n = strlen($substr);
12     if ($m < $n) return false;
13     for ($i = 0; $i < ($m - $n + 1); $i++) {
14         $sub = substr($str, $i, $n);
15         if (strcmp($substr, $sub) == 0) {
16             if ($before) {
17                 return substr($str, 0, $i);
18             } else {
19                 return substr($str, $i);
20             }
21         }
22     }
23     return false;
24 }
查找字符串

7、字符串替换

 1 /**
 2  * 字符串替换 (即PHP内置函数str_replace)
 3  * @link http://php.net/manual/en/function.str-replace.php
 4  * @param $search 要查找的值
 5  * @param $replace 要替换的值
 6  * @param $subject 被搜索的字符串
 7  * @return string
 8  */
 9 function str_replace($search, $replace, $subject) {
10     if (strstr($subject, $search) != false) {
11         $m = strlen($subject);
12         $n = strlen($search);
13         $new_str = '';
14         for ($i = 0; $i < $m; $i++) {
15             $new = substr($subject, $i, $n);
16             if (strcmp($new, $search) == 0) {
17                 $new_str .= $replace;
18                 $i += ($n - 1);
19             } else {
20                 $new_str .= $subject{$i};
21             }
22         }
23         return $new_str;
24     } else {
25         return $subject;
26     }
27 }
字符串替换

 

posted @ 2017-12-04 09:27  jiazuanjie  阅读(121)  评论(0编辑  收藏  举报