首页后端开发PHPPHP七个常见的算法和实例汇总

PHP七个常见的算法和实例汇总

时间2024-03-26 06:22:03发布访客分类PHP浏览455
导读:这篇文章给大家分享的是PHP常见的算法和实例。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编学习一下吧。 一、文件夹遍历 <?php function allFile($path...

这篇文章给大家分享的是PHP常见的算法和实例。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编学习一下吧。

一、文件夹遍历

?php
function 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";

  }

}

二、九九乘法表

?php
function create()
{
    
  for ($i = 1;
     $i = 9;
 $i++) {
    
    for ($j = 1;
     $j = $i;
 $j++) {
    
      echo $j . '*' . $i . '=' . $i * $j . PHP_EOL;

    }
    
    echo "br />
    ";

  }

}

三、无限极递归分类

①、递归算法

?php
function 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;

}

②、引用算法

?php
function 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;

}

四、冒泡排序

?php
function 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;

}

五、选择排序

?php
function 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;

}

六、插入排序

?php
function 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;

}

七、快速排序

?php
function 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算法有帮助,想要了解更多大家可以关注其它的相关文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP七个常见的算法和实例汇总
本文地址: https://pptw.com/jishu/653316.html
Golang中比较常见的.gitignore文件有多少 ajax跨域问题出现几种情况是什么,如何解决跨域

游客 回复需填写必要信息