AI智能
改变未来

PHP常见算法合集代码实例

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下

一、文件夹遍历

<?phpfunction allFile($path = __DIR__, $level = 1){if (is_dir($path) && is_readable($path)) {if($pd = opendir($path)) {while (($file = readdir($pd)) !== false) {if($file != \'.\' && $file != \'..\') {if (($subPath = $path . DIRECTORY_SEPARATOR . $file) && is_dir($subPath)) {echo \"<pre />\";echo \'<span style=\"color: red;font-weight:bold;\">\' . str_repeat(\"--\", $level) . $subPath . \'</span>\';self::allFile($subPath, $level++);} else {echo \"<pre />\";echo str_repeat(\"--\", $level) . $subPath;}}}}} else {echo \"{$path} is not a available dir\";}}

二、九九乘法表

<?phpfunction create(){for ($i = 1; $i <= 9; $i++) {for ($j = 1; $j <= $i; $j++) {echo $j . \'*\' . $i . \'=\' . $i * $j . PHP_EOL;}echo \"<br />\";}}

三、无限极递归分类

①、递归算法

<?phpfunction getTree($array, $pid =0, $level = 0){//声明静态数组,避免递归调用时,多次声明导致数组覆盖static $list = [];foreach ($array as $key => $value) {//第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点if ($value[\'pid\'] == $pid) {//父节点为根节点的节点,级别为0,也就是第一级$value[\'level\'] = $level;//把数组放到list中$list[] = $value;//把这个节点从数组中移除,减少后续递归内存消耗unset($array[$key]);//递归调用getTree($array, $value[\'id\'], $level+1);}}return $list;}

②、引用算法

<?phpfunction getTree($array){//第一步 构造数据$items = [];foreach($array as $value) {$items[$value[\'id\']] = $value;}//第二部 遍历数据 生成树状结构$tree = [];foreach($items as $key => $value) {if(isset($items[$item[\'pid\']])) {$items[$item[\'pid\']][\'son\'][] = &$items[$key];} else {$tree[] = &$items[$key];}}return $tree;}

四、冒泡排序

<?phpfunction bubbleSort($arr){$len = count($arr);for($i=1; $i<$len; $i++) {for($k=0; $k<$len-$i; $k++) {if($arr[$k] > $arr[$k+1]) {$tmp=$arr[$k+1];$arr[$k+1]=$arr[$k];$arr[$k]=$tmp;}}}return $arr;}

五、选择排序

<?phpfunction selectSort($arr){$len=count($arr);for($i=0; $i<$len-1; $i++) {$p = $i;for($j=$i+1; $j<$len; $j++) {if($arr[$p] > $arr[$j]) {$p = $j;}}if($p != $i) {$tmp = $arr[$p];$arr[$p] = $arr[$i];$arr[$i] = $tmp;}}return $arr;}

六、插入排序

<?phpfunction insertSort($arr){$len=count($arr);for($i=1; $i<$len; $i++) {$tmp = $arr[$i];for($j=$i-1;$j>=0;$j--) {if($tmp < $arr[$j]) {$arr[$j+1] = $arr[$j];$arr[$j] = $tmp;} else {break;}}}return $arr;}

七、快速排序

<?phpfunction quickSort($arr) {$len = count($arr);if($len <= 1) return $arr;$base_num = $arr[0];$left_array = [];$right_array = [];for($i=1; $i<$len; $i++) {if($base_num > $arr[$i]) {$left_array[] = $arr[$i];} else {$right_array[] = $arr[$i];}}$left_array = self::quickSort($left_array);$right_array = self::quickSort($right_array);return array_merge($left_array, array($base_num), $right_array);}

到此这篇关于PHP常见算法合集代码实例的文章就介绍到这了,更多相关PHP常见算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

  • 50个优秀经典PHP算法大集合 附源码
  • php计数排序算法的实现代码(附四个实例代码)
  • PHP实现常用排序算法的方法
  • php经典趣味算法实例代码
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » PHP常见算法合集代码实例