当前位置:首页 » 编程语言 » php函数代码

php函数代码

发布时间: 2022-11-15 04:00:14

㈠ 这段php 递归函数代码,大神帮我解释下

代码二: 和代码1 的区别是

代码1 是 echo $a.'######<br>' 以后 $a+1 了;

结果是

1######
2######
3######
4######
5######
6######
7######
8######
9######
10*****

代码二 $a+1 以后才 $a.'######<br>'

10*****
9######
8######
7######
6######
5######
4######
3######
2######
1######

其实递归不难理解 无非是执行的次序问题 .

代码1 的执行次序是

1demo(1)--输出1######
2demo(2)--输出2######
3demo(3)--输出3######
4demo(4)--输出4######
5demo(5)--输出5######
6demo(6)--输出6######
7demo(7)--输出7######
8demo(8)--输出8######
9demo(9)--输出9######
10demo(10)--输出10*****
返回demo(9)
返回demo(8)
返回demo(7)
返回demo(6)
返回demo(5)
返回demo(4)
返回demo(3)
返回demo(2)
返回demo(1)

代码2的执行次序是
1demo(1)
2demo(2)
3demo(3)
4demo(4)
5demo(5)
6demo(6)
7demo(7)
8demo(8)
9demo(9)
10demo(10)--输出10*****
11返回demo(9)--输出9######
12返回demo(8)--输出8######
13返回demo(7)--输出7######
14返回demo(6)--输出6######
15返回demo(5)--输出5######
16返回demo(4)--输出4######
17返回demo(3)--输出3######
18返回demo(2)--输出2######
19返回demo(1)--输出1######

㈡ 10 个经典PHP函数

1.
sys_getloadavg()
sys_getloadavt()可以获得系
统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。
与其让服务器因负
载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。
不过很遗憾,该函数在windows下无效。
2.
pack()
Pack()
能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。
3.
cal_days_in_month()
cal_days_in_month()能够返回指定月份共有多少天。
4.
_()
WordPress开发者经常能见到这个函数,还有
_e()。这两个函数功能相同,与gettext()函数结合使用,能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。
5.
get_browser()
在发送页面前先看看用户的浏览器都能做些什么是
不是挺好?get_browser()能获得用户的浏览器类型,以及浏览器支持的功能,不过首先你需要一个php_browscap.ini文件,用来给
函数做参考文件。
要注意,该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如,如果用户关闭了浏览器对
javaScript的支持,函数无法得知这一点。但是在判断浏览器类型和OS平台方面,该函数还是很准确的。
6.
debug_print_backtrace()
这是一个调试用的函数,能帮助你发现代码中的逻辑错误。要理
解这个函数,还是直接看个例子吧:
$a
=
0;
function
iterate()
{
global
$a;
if(
$a
<
10
)
recur();
echo
$a
.
“,
“;
}
function
recur()
{
global
$a;
$a++;
//
how
did
I
get
here?
echo
“\n\n\n”;
debug_print_backtrace();
if(
$a
<
10
)
iterate();
}
iterate();
#
OUTPUT:
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#4
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#5
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
7.
metaphone()
这个函数返回单词的metaphone值,相同读音的单词具有相同的metaphone值,也就是说这个函数可以帮你判断两个单词的读音是否
相同。不过对中文就无效了。。。
8.
natsort()
natsort()能将一个数组以自然排序法
进行排列,直接看个例子吧:
$items
=
array(
“100
apples”,
“5
apples”,
“110
apples”,
“55
apples”
);
//
normal
sorting:
sort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
)
natsort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
)
9.
levenshtein()
Levenshtein()
告诉你两个单词之间的“距离”。它告诉你如果想把一个单词变成另一个单词,需要插入、替换和删除多少字母。
看个例子吧:
$dictionary
=
array(
“php”,
“javascript”,
“css”
);
$word
=
“japhp”;
$best_match
=
$dictionary[0];
$match_value
=
levenshtein($dictionary[0],
$word);
foreach($dictionary
as
$w)
{
$value
=
levenshtein($word,
$w);
if(
$value
<
$match_value
)
{
$best_match
=
$w;
$match_value
=
$value;
}
}
echo
“Did
you
mean
the
‘$best_match'
category?”;
10.
glob()
glob()会让你觉得用
opendir(),
readdir()和closedir()来寻找文件非常蠢。
foreach
(glob(“*.php”)
as
$file)
echo
“$file\n”;

㈢ Php header()函数语法及使用代码

语法:
复制代码
代码如下:
Void
header(string
$string[,bool
$replace=true
[,
int
$http_response_code)
向客户端发送原始的HTTP报头
需注意:
Header函数必须在任何实际的输出前调用,无论是一般的html标签、文件中空行,或者来自php。就是在这个函数之前不能有任何形式的输出。
参数说明:
参数 描述
string 必需。规定要发送的报头字符串。
replace 可选。指示该报头是否替换之前的报头,或添加第二个报头。
默认是
true(替换)。false(允许相同类型的多个报头)。
http_response_code 可选。把
HTTP
响应代码强制为指定的值。(PHP
4
以及更高版本可用)
常见用法实例:
一、发送服务器状态码
复制代码
代码如下:
header('HTTP/1.0
404
Not
Found');
常用状态码:
状态码 说明
100-199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299 成功接收请求,并已完成整个处理过程,常用200
300-399 未完成请求,客户端需要进一步细化请求,比如,请求的资源已经移动到一个新的地址,常用302,304
400-499 客户端请求有误
常用404
500-599 服务器端出现错误,常用500
详细见:HTTP&FTP相应提示信息
二、页面跳转
复制代码
代码如下:
//
立即跳转
header('Location:
http://www.jb51.net/');
//
3秒后跳转
header('refresh:3;url=http://www.jb51.net');
3.设置浏览器缓存
强制浏览器不进行缓存!
[code]
//header('Expires:-1');
header('Expires:
Mon,
26
Jul
1997
05:00:00
GMT');
header('Cache-Control:no-cache,must-revalidate');
header('pragma:no-cache');
header('Last-Modified:
'.
date('D,
j
M
Y
H:i:s
T')
);

㈣ 北大青鸟设计培训:PHP函数代码基础知识

我们在学习PHP开发相关基础知识的时候,对于不同的开发原理以及代码的使用都是基本的能力要求。
今天,青岛电脑培训http://www.kmbdqn.cn/就一起来了解PHP开发基础知识中的函数代码都有哪些。
array()array(value1,value2?..)创建数组array_chunk(array,size,preserve_keys)把一个数分割成新的数组块[tk]array_combine(keys,values)通过合并两个数组(键名数组,键值数组)组成一个新的数组array_count_values(array)用于统计数组中所有值出现的次数array_diff(array1,array2,...)比较数组返回两个数组的差集(只比较键值)array_diff_assoc(array1,array2,..)比较数组返回两个数组的差集(比较键名和键值)array_diff_key(array1,array2,...)比较数组返回两个数组的差集(只比较键名)array_fill(index,number,value)用给定的键值填充数组array_filter(array,要用的回调函数)用回调函数过滤数组中的元素array_flip(array)反转/交换数组中的键名和对应关联的键值[flp]array_keys(array)返回数组中的所有键名array_merge(array1,array2,..)把一个或多个数组合并一个数组[m:rd]array_pad(array,size,value)将指定数量的带有指定值的元素插入到数组中array_pop(array)删除后一个元素array_push(array)末尾添加数组array_shift(array())删除数并返回被删除的元素值array_unshift(array))组中的一个元素添加一个或多个元素array_rand(array,number)从数组中随机选出一个或多个数组array_replace(array1,array2...)使用后面数组的值替换一个数组的值array_reverse(array)数组反转并返回新的数组array_search(value,array,strict(可选true,flase))搜索值返回键名。
True搜索键名和值都一样的元素array_slice(array,start,length,preserve)返回数组中的选定部分array_splice(array,start,length,array)把指定的元素去掉并用其他的替换array_unique(array)删除数组中的重复值美[junik]array_values(array)返回数组中的所有值array_key_exists(key,array)查找数组键名是否存在count(array)返回数组中元素的数目美[kant]in_array(‘值’,$array,bool)检查数组中是否存在指定的值设置为TRUE,则in_array函数检查搜索的数据与数组的值的类型是否相同。

sql注入与转义的php函数代码

sql注入:
正常情况下:
delete.php?id=3;
$sql
=
'delete
from
news
where
id
=
'.$_GET['id'];
恶意情况:
delete.php?id=3
or
1;
$sql
=
'delete
from
news
where
id
=
3
or
1';
-------如此执行后,所有的记录将都被删除
应该采取相关措施。。。比如用之前先判断是否是数字等等。
要使自己相信,从客户端传来的信息永远是不可靠的!!
转义:
有时候从客户端传来的数据,可能恶意包含些特殊的字符,比如单引号、斜杠等,所以需要转义,转义成普通的字符,此时就要用到string
addslashes
(
string
$str
),这个函数可以对某个变量进行转义。但是,如果对数组里的元素进行转义,就用foreach循环数组,如下:
复制代码
代码如下:
foreach($_POST
as
$k=>$v)
{

if(is_string($v))
{

$_POST[$k]
=
addslashes($v);

}
}
但是如果数组中还包含数组,那就要递归进行转义了,此时用到
array_walk_recursive(array
&$input
,
callback
$funcname
[,
mixed
$userdata
])

将用户自定义函数
funcname
应用到
array
数组中的每个单元。本函数会递归到更深层的数组中去。典型情况下
funcname
接受两个参数。input
参数的值作为第一个,键名作为第二个。如果提供了可选参数
userdata,将被作为第三个参数传递给
callback
funcname。成功时返回
TRUE,
或者在失败时返回
FALSE
也就是说:用自定义的函数,至少要能接收两个参数,而addslashes()只能接收一个参数所以自定义一个函数如下:
复制代码
代码如下:
function
a(&$v,$k){
$v=addslashes($v);
}
array_walk_recursive(&$arr,'a');
系统自动转义:
PHP中,有一个魔术引号的概念,如何打开?答:在PHP.ini中,magic_quotes_gpc=On;重启apache即可
魔术引号被打开后,系统会自动对$_GET,$_POST,$_COOKIE数据进行转义,在不知情的情况下,再次进行手动转义的话,就转多了,要想合理的进行转义,就要首先判断,魔术符号是否已经打开了,用magic_quotes_gpc()进行判断,不需要传值,关闭返回0,关闭返回1
复制代码
代码如下:
if(!get_magic_quotes_gpc())
{
//
如果魔术引号没开

function
_addslashes(&$v,$k)
{


$v
=
addslashes($v);


}


array_walk_recursive(&$_GET,'_addslashes');

array_walk_recursive(&$_POST,'_addslashes');


array_walk_recursive(&$_COOKIE,'_addslashes');
}

㈥ 关于函数和遍历的php代码

<?php

functionshow_nums($num){
$ji=array(1,3,5,7,9);
$ou=array(0,2,4,6,8);
if(!in_array($num,array_merge($ji,$ou))||$num==''){
die('参数不合法!');
}

$last=array();
if(is_numeric($num)&($num&1)){
foreach($jias$v){
$last[]=$num.$v;
}
}elseif(is_numeric($num)&(!($num&1))){
foreach($ouas$v){
$last[]=$num.$v;
}
}else{
die('未知错误');
}
//return$last;返回数组
returnjoin(',',$last);
}
echoshow_nums(2).'<hr/>';
echoshow_nums(7).'<hr/>';
echoshow_nums(10).'<hr/>';

㈦ PHP常用函数有哪些

常用函数比较多
如:字符串处理函数,数组函数,日期函数,MySQL函数,文件系统函数,GD函数库等

㈧ php中的四舍五入函数代码(floor函数、ceil函数、round与intval)

floor函数和ceil函数互相搭配起来可以使php
处理的数据更加真实可靠。
一、先来看floor函数:
语法:
float
floor
(
float
value
)
说明:
返回不大于
value
的下一个整数,将
value
的小数部分舍去取整。floor()
返回的类型仍然是
float,因为
float
值的范围通常比
integer
要大。
floor()
例子
1
<?php
echo
floor(1.6);
//
will
output
"1"
echo
floor(-1.6);
//
will
output
"-2"
?>
floor()
例子
2
<?php
echo(floor(0.60));
echo(floor(0.40));
echo(floor(5));
echo(floor(5.1));
echo(floor(-5.1));
echo(floor(-5.9))
?>
输出:
0
0
5
5
-6
-6
二、ceil函数:
语法:
float
ceil
(
float
value
)
说明:
返回不小于
value
的下一个整数,value
如果有小数部分则进一位。ceil()
返回的类型仍然是
float,因为
float
值的范围通常比
integer
要大。
ceil()
例子:
<?php
echo
ceil(4.3);
//
5
echo
ceil(9.999);
//
10
echo
ceil(-3.14);
//
-3
?>
看到这两个函数的区别了么。。
在分页时我们会常用到的
//页码计算:
$lastpg=ceil($totle/$displaypg);
//最后页,也是总页数,用ceil就方便多了。
$lastpg=$lastpg
?
$lastpg
:
1;
//没有显示条目,置最后页为1
$page=min($lastpg,$page);
$prepg=$page-1;
//上一页
$nextpg=($page==$lastpg
?
0
:
$page+1);
//下一页
$firstcount=($page-1)*$displaypg;
当然,如果需要制定精度就需要使用round函数了。
三、round函数:
语法:
float
round
(
float
val
[,
int
precision]
)
说明:
返回将
val
根据指定精度
precision(十进制小数点后数字的数目)进行四舍五入的结果。precision
也可以是负数或零(默认值)。
round()
例子
<?php
echo
round(3.4);
//
3
echo
round(3.5);
//
4
echo
round(3.6);
//
4
echo
round(3.6,
0);
//
4
echo
round(1.95583,
2);
//
1.96
echo
round(1241757,
-3);
//
1242000
echo
round(5.045,
2);
//
5.05
echo
round(5.055,
2);
//
5.06
?>
四、intval—对变数转成整数型态
变量转成整数类型。
语法:
int
intval(mixed
var,
int
[base]);
返回值:
整数
函数种类:
PHP
系统功能

内容说明
本函数可将变量转成整数类型。可省略的参数
base
是转换的基底,默认值为
10。转换的变量
var
可以为数组或类之外的任何类型变量。
例子intval()
<?php
echo
intval(4.3);
//4
echo
intval(4.6);
//
4
?>
注:intval如果是字符型的会自动转换为0

intval('abc');
输出结果
0
如果是
intval('5fd');
输出结果是
5

㈨ PHP中的文件系统函数(一)

从这篇文章开始,我们将学习一系列的 PHP 文件系统相关函数。其实这些函数中,有很多都是我们经常用到的,大家并不需要刻意地去记住它们,只要知道有这么个东西,在使用的时候记得来查文档就可以了。

文件路径相关的函数往往在一些框架中会比较常见,而且多会配合 __FILE__ 、 __DIR__ 之类的魔术常量使用。

basename() 函数是获得路径中的文件名,它有两个参数,第一个是文件的路径,第二个是过滤掉的内容,比如第一条测试语句我们过滤掉文件的后缀名。

dirname() 返回的是路径中的路径部分,也就是不包含文件名的那部分内容,和 basename() 正好是相反的功能。

pathinfo() 函数用于以数组的形式返回路径中的信息,从结果来看,我们可以看到文件的 dirname 部分,basename 部分,以及文件的扩展名 extension 和不包含扩展名的 filename 内容。

realpath() 返回的是规范化的绝对路径名,它扩展所有的符号连接并且处理输入的路径中的 ./ 、 ../ 以及多余的 / ,返回的内容是标准规范的绝对路径。

接下来,我们学习一些修改文件相关属性的函数,主要就是在 Linux 系统环境中的文件权限信息的操作。

当然,首先我们得创建一个文件。和 Linux 中的命令是非常类似的。

touch() 函数除了给出要创建的文件名之外,还有两个可选参数可以指定文件的创建时间及访问时间,不给参数的话默认就是当前时间。这个文件名可以是相对或绝对路径中有权限的目录,并在该目录下创建一个空的文件。

通过 fileowner() 函数,我们可以获得某个文件所属的用户,默认情况下我们的用户是当前运行 PHP 脚本的用户,也就是系统目前的登录用户。在这里,我们使用 chown() 函数,将用户改为 www 用户。clearstatcache() 是用于清理文件系统的缓存信息,如果不清理一下的话,fileowner() 返回的依然还是之前的用户信息。

同理,使用 filegroup() 函数获得文件的属组信息,chgrp() 用于修改文件的属组。fileperms() 用于返回文件的权限信息,它返回的是数字模式的文件访问权限,这里我们使用 sprintf() 格式化结果后获得我们常用的 Linux 系统权限格式。chmod() 函数用于修改文件的权限,它的权限参数是三个 8 进制数据组成的数字,也就是代表 Linux 系统中的 1 、2 、4 和它们的组合,所以我们需要在前面再加上一个 0 用于确保操作能够正常执行。关于系统文件权限的知识大家需要认真学习 Linux 系统中相关的内容。

注意,上述函数如果在命令行中运行失败,大部分原因是没有权限,可以使用 sudo 进行测试。在 fastcgi 中运行时,就更加需要注意权限问题,仅在我们服务器可以操作的目录中进行安全的文件权限修改。

stat() 函数可以获取到指定文件的所有属性信息,在这里我们可以看到文件的 uid 、 gid 、 ctime 、 mtime 等信息。

在 Linux 系统中,有软连接和硬连接的相关知识。其实软连接就像是 Windows 中的快捷方式,而硬连接相关于复制了一份数据。在 PHP 中,也为我们提供了创建软硬连接以及相关的一些操作。

使用 link() 函数创建的就是一个指定文件的硬连接文件,而使用 symlink() 创建的则是一个软连接文件。相对来说,我们使用软连接的场景会更多一些。lstat() 就和 stat() 函数的功能一样,查看文件的各种属性信息,不过 lstat() 函数针对的是软硬连接文件。

同样地,我们也可以修改软硬连接的用户和用户组信息,不过它们的信息不能通过 fileowner() 或 filegroup() 查看。因为它们是连接文件,本身还是和原始文件绑定在一起的,使用 fileowner() 这类的函数查看到的依然是原始文件的信息。我们可以在系统环境中使用 ls -l 查看连接文件的用户和用户组信息是否修改成功。

今天的内容比较简单,而且修改权限的操作也并不常用。不过对于系统安全来,它们还是非常有用的,比如对于上传来说,我们要预防上传可执行文件的话,就可以通过修改文件的权限来让文件无法直接运行,从而起到安全保护的作用。另外,目录路径相关的操作也是一些框架的基础,几乎所有框架的入口或者说是 Composer 的入口,都会见到 dirname() 以及 basename() 之类函数的身影。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/6.PHP中的文件系统函数(一).php

参考文档:

https://www.php.net/manual/zh/ref.filesystem.php

热点内容
二级c语言技巧 发布:2025-01-13 07:54:37 浏览:2
自动充值脚本 发布:2025-01-13 07:48:02 浏览:19
越容易压缩 发布:2025-01-13 07:37:37 浏览:558
ecstore数据库 发布:2025-01-13 07:29:43 浏览:297
手机设置密码忘记了怎么解开 发布:2025-01-13 07:28:29 浏览:21
存储卡交流 发布:2025-01-13 07:16:06 浏览:984
php字符串浮点数 发布:2025-01-13 07:15:28 浏览:999
python排序cmp 发布:2025-01-13 07:09:04 浏览:73
云脚本精灵 发布:2025-01-13 07:03:27 浏览:619
高维访问 发布:2025-01-13 07:03:23 浏览:976