- include和require的区别
- require只加载一次,include用一次加载一次。所以include多用于函数内部文件加载
- require加载失败则会停止,include加载失败则忽略
- require无返回值,include有返回值
- _once表示只引入一次,即之前已经引入过的不再引入
function sum(...$val)
中,…代表传递的是数组- 递归函数计算阶乘和迭代函数计算阶乘,基本递归都可以用迭代来代替,迭代消耗的资源更小
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;
}
- 字符串函数
- strlen 字符串长度
- trim($string, ‘.com’) 截去字符串两头的某个字符直至出现其他字符
trim('manimabam', 'ma')
输出结果为 nimab
- ucfirst 首字母大写
- ucword 字符大写
- md5 加密
- explode(’.’, $string) 拆分为数组
- implode(’.’, $arry) 合并为字符串
- substr() 截取字符串
- str_repeat 重复指定次数字符串
- str_replace 将字符串中的字符进行代替
- 数组函数
- 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遍历数组进行处理
- 时间相关函数
- 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);
}
}
}