整理下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 dirname[, resourcecontext] )尝试删除 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));
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容