PHP基础

本文介绍了PHP的基础知识,包括include与require的区别,如require只加载一次且加载失败会停止,而include可多次加载。此外,讲解了字符串和数组函数,如strlen、trim、explode和implode等,以及时间相关函数如date和time。还涵盖了数组操作如array_map和array_filter,文件操作如file_put_contents和is_file,以及目录操作如mkdir和scandir。
摘要由CSDN通过智能技术生成
  1. include和require的区别
  • require只加载一次,include用一次加载一次。所以include多用于函数内部文件加载
  • require加载失败则会停止,include加载失败则忽略
  • require无返回值,include有返回值
  • _once表示只引入一次,即之前已经引入过的不再引入
  1. function sum(...$val)中,…代表传递的是数组
  2. 递归函数计算阶乘和迭代函数计算阶乘,基本递归都可以用迭代来代替,迭代消耗的资源更小
public function recursive($num) {
	if ($num == 0) {
		return $num;
	}
	return $num*recursive($num-1);
}

public function recursive($num) {
    $product= 1;
    for($i=2; $i<=$num ; $i++) {
        $product*= $i;
    }
    return $product;
}
  1. 字符串函数
  • strlen 字符串长度
  • trim($string, ‘.com’) 截去字符串两头的某个字符直至出现其他字符
trim('manimabam', 'ma')

输出结果为 nimab
  • ucfirst 首字母大写
  • ucword 字符大写
  • md5 加密
  • explode(’.’, $string) 拆分为数组
  • implode(’.’, $arry) 合并为字符串
  • substr() 截取字符串
  • str_repeat 重复指定次数字符串
  • str_replace 将字符串中的字符进行代替
  1. 数组函数
  • current($arr) 返回数组当前元素
  • next($arr) 返回数组下个元素
  • prev($arr) 返回数组山个元素
  • key($arr) 返回数组键值
  • list($arr) 把数组中的值赋给一些变量
  • strtoupper和strtolower
$my_array = array("Dog","Cat","Horse");
list($a, $b, $c) = $my_array;
  • array_unshift和array_shift,从头推拉
  • array_push和array_pull,从尾推拉
  • array_merge合并数组
  • in_array
  • 递归将数组键值变为大写,递归将数组数值变为大写(strtoupper)
    $database = [
        'host' => 'localhost',
        'post' => 3306,
        'user' => 'localhost',
        'cache' => [
            'host' => '122.122.122.122',
            'user' => 'hdcms',
        ],
    ];
    
	function toChangeKey($database, $type = CASE_UPPER) {
	
	    $handler = $type == CASE_UPPER ? 'strtoupper' : 'strtolower';
	    foreach ($database as $key => $value) {
	        $database[$handler($key)] = is_array($value) ? toChangeKey($value, $type) : $value;
	        unset($database[$key]);
	    }
	    return $database;
	};
	
	function toChangeValue($database, $type = CASE_UPPER) {
	    $handler = $type == CASE_UPPER ? 'strtoupper' : 'strtolower';
	    foreach ($database as $key => $value) {
	        $database[$key] = is_array($value) ? toChangeValue($value, $type) : $handler($value);
	    }
	    return $database;
	}

  • array_map() 对数组里每个元素的值进行处理
array_map(function ($value) {
        return strtoupper($value);
    }, $arr)
  • array_filter() 返回符合回调函数的数组元素
array_filter($arr, function ($value) {
        return $value > 2 ;
    })
  • array_walk_recursive遍历数组进行处理
  1. 时间相关函数
  • date(‘Y-m-d h-i-s’)
  • time() 当前时间戳
  • microtime(true) 返回浮点型当前时间戳
  • strtotime

7.文件相关函数

  • is_file(glob(DIR.’/…/config/config.php’)) 判断文件是否存在
  • file_put_contents($file, $content) 将内容写入文件,如果文件不存在,则新建文件
  • file_get_contents($file) 获取文件内容
  • basename($file) 获取文件名,含文件类型
  • dirname($file) 获取文件路径
  • _DIR_ 当前文件路径 /www/website
  • _FILE_ // 取得当前文件的绝对路径 /www/website/index.php
  • is_dir
  • mkdir($path, 0755, true) 其中true表示允许递归创建目录
  • opendir(path,context)若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。
  • readdir() 函数返回由 opendir() 打开的目录句柄中的条目。若成功,则该函数返回当前一个文件名(文件夹名),并指针指向下一个文件夹(文件),否则返回 false。
  • scandir() 函数返回一个数组,其中包含指定路径中的文件名和目录。
  • 删除文件 unlink
  • glob(’*.php’),遍历文件夹,返回数组,包含指定路径中的文件名
// 递归删除文件夹下所有文件和目录
function deleteDir($dir) {
    if(!is_dir($dir)) {
        return true;
    }
    foreach (glob($dir.'/*') as $file) {
        is_file($file)? unlink($file) : deleteDir($file);
    }
    rmdir($dir);
}

// 遍历读取文件夹下所有文件夹名(用opendir和readdir)
$dir = '.';
function read($dir) {
    if (is_dir($dir) && $paths = opendir($dir)) {
        while ($path = readdir($paths)) {
            if (is_dir($dir.'/'.$path) && !in_array($path, ['.', '..'])) {
                echo $path.'<br/>';
                read($dir.'/'.$path);
            }

        }
    }
}

// 遍历读取文件夹下所有文件名(用glob)
function read($dir) {
    if (is_dir($dir) ) {
        $files = glob($dir.'/*');
        foreach ($files as $file) {
            if (is_file($file)) {
                echo $file.'<br/>';
                continue;
            }
            read($file);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值