整理下php的基础

字符串颠倒:

  • 涉及函数:
  • mb_strlen(string $str) 兼容字符集的统计字符串个数,如果出现特殊和中文字符按照一个单位计算
  • mb_substr(str, start, length) 获取部分字符串 str:完整字符串。start:开始位置 例如12 5等等。 length:取多少位 例如:1,2,3取一位等。
  • strrev($str) 该函数可以直接将字符串进行颠倒,但并不支持一些中文或者特殊字符。
  • 需要注意的是mb_strlen 和 mb_substr 这两个函数并不是php核心函数,需要在php.ini文件中开启:extension=php_mbstring 扩展,如果没有那么会提示未定义函数的错误。
//代码实现
$str = 'dsads12bni你好@34ddsa';
function mb_strrev($str){
    if(empty($str)){
        return false;
    }
    $r = '';
    for($i= mb_strlen($str) - 1; $i >= 0; $i --){
          $r .= mb_substr($str,$i,1);
    }
    return $r;
}
echo mb_strrev($str);
        $str = 'adsadas121321';
    function st_strrev($str){
        $r = '';
        for ($i = mb_strlen($str)-1; $i>=0; $i--) {
            $r .= $str{$i};
        }
        return $r;
    }
        echo st_strrev($str);

验证字符串A中是否包含字符串B中的所有字符(不考虑出现的位置和顺序)

  • 涉及函数:
  • is_string(string $str) 判断变量$str是否是字符串,如果是返回true 否者返回false;
  • mb_strlen(string $str) 兼容字符集的统计字符串个数,如果出现特殊和中文字符按照一个单位计算
  • empty($str) 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
  • str_split(string $string[, int $split_length = 1]) 将字符串转换为数组。默认长度是1 设置其他阀值。
  • in_array($needle, array $haystack[ bool $strict = FALSE]); $needle 搜索的值。 $haystack 待搜索的数组。$strict是个bool 如果是true还会检查搜索值的类型是否和待搜索中的相同。
    //代码实现
    $stra = 'abcdefghizklmns123456涛里你打好啦';
    $strb = 'absdsadsa21n你好涛';
    
    function str_ck($stra,$strb){
        if(!is_string($stra) || !is_string($strb) || mb_strlen($stra) < mb_strlen($strb) || empty($stra) || empty($strb)){
            return false;
        }
        $arra = str_split($stra);
        $arrb = str_split($strb);
        for ($i = 0;$i< count($arrb); $i++){
            if(!in_array($arrb[$i],$arra)){
                return false;
            }
        }
        return true;
    }   

    var_dump(str_ck($stra,$strb));

递归删除目录下的文件

  • 涉及函数:
  • opendir(string $path) 打开一个目录句柄,可用于之后的closedir(),readdir(),和rewinddir()调用中。参数:path 要打开的目录路径。
  • readdir( $dir_handle) 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回,返回成功返回文件名,返回失败返回false;
  • bool is_dir(string $filename) 判断给定文件名是否是一个目录。如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。
  • bool unlink( string $filename[, resource $context] ) 删除 filename。和 Unix C 的 unlink() 函数相似。发生错误时会产生一个 E_WARNING 级别的错误。 成功时返回 TRUE, 或者在失败时返回 FALSE。
  • void closedir ([ resource $dir_handle ] ) 关闭由 dir_handle 指定的目录流。流必须之前被 opendir()如果目录句柄没有指定,那么会假定为是opendir()所打开的最后一个句柄。
  • bool rmdir( string context] )尝试删除 dirname 所指定的目录。该目录必须是空的,而且要有相应的权限。失败时会产生一个 E_WARNING 级别的错误。 成功时返回 TRUE, 或者在失败时返回 FALSE。
// $dir:要删除的文件的目录
function recursiveDelete($dir)
{    
     // 打开指定目录
   if ($handle = @opendir($dir))
   {
     while (($file = readdir($handle)) !== false)
     {
         if (($file == ".") || ($file == ".."))
         {
           continue;
         }
         if (is_dir($dir . '/' . $file))
         {
           // 递归
           recursiveDelete($dir . '/' . $file);
         }
         else
         {
           unlink($dir . '/' . $file); // 删除文件
         }
     }
     @closedir($handle);
     rmdir ($dir); 
   }

冒泡排序:

  • 涉及函数:
  • int count( $array_or_countable[, int $mode = COUNT_NORMAL]) 计算数组中的单元数目,或对象中的属性个数。
    $arr = array(20,60,40,10,30,50,70,80,90);
    function mp($arr){
        $len = count($arr);
        if ($len <= 1) {
            return $arr;
        }
        //升序有小到大,降序由大到小
        for($i=0;$i<$len-1; $i++){
            $flag = 1;
            for($j=$i+1;$j<$len; $j++){
                if($arr[$i] > $arr[$j]){
                    $flag = 0;
                    $tmp = $arr[$i];
                    $arr[$i] = $arr[$j];
                    $arr[$j] = $tmp;
                }
            }
            if($flag){
                break;
            }
        }
        return $arr;
    }

    function mps($arr){
        $len = count($arr);
        if ($len <= 1) {
            return $arr;
        }
        for($i = 0; $i<$len; $i++){
            $flag = 1;
            for($j=0;$j<$len-$i-1;$j++){
                if($arr[$j] < $arr[$j+1]){
                    $flag = 0;
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j + 1];
                    $arr[$j + 1] = $tmp; 
                }

            }
            if($flag){
                break;
            }
        }
        return $arr;
    }

    var_dump(mp($arr));

你可能感兴趣的:(整理下php的基础)