知识在乎不断的积累和总结,好记性不如烂笔头.读各种书,以博客以记之,为了自己日后学习查阅,也可以和远方来的朋友分享交流。

PHP中的常用函数

其实学习PHP或者Python,最终要的一点就是要熟悉一些常用库或者函数,这样在应用的时候才能游刃有余,下面总结一下常用的函数
查看数据类型

  • gettype(传入一个变量) 能够获得变量的类型
  • var_dump(传入一个变量) 输出变类型和值
    判断数据类型
  • is_int/bool/float/string/array/object/null/resource(资源)/scalar(标量)/numeric(是否为数值类型)/callable(是否为函数)
    1
    2
    3
    4
    $float = 88.8;
    $type = gettype($float);
    var_dump($float);
    echo $type;

强制类型转换

强制类型转换有三种方式:

  • 用后面的三个函数可以完成类型转换,intval()、floatval()、strval()
  • 变量前加上()里面写上类型,将它转换后赋值给其他变量
  • settype(变量,类型) 直接改变量本身

常量和变量

常量

定义 define(常量名,常量值);defined()函数来做安全机制
系统的一些常量:

常量明 说明 常量明 说明
LINE 当前所在的行 FILE 当前文件在服务器的路径
FUNCTIOIN 当前函数名 CLASS 当前类名
METHOD 当前成员方法名 PHP_OS PHP运行的操作系统
PHP_VERSION 当前PHP的版本 TRAIT Trait 的名字,php5.4新加
DIR 文件所在的目录 NAMESPACE 当前命名空间的名称(区分大小写
1
2
3
4
5
6
define('MY_NAME','PHP');
echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//正确的调用方式该这么写
echo '我的名字是' . MY_NAME;

变量

  • 变变量其实就是——已声明的变量前,再上变量符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $shu = 'biao';
    $biao = 'wo';
    $wo = 'test';
    $test = 'sina';
    $sina = 'zhongguo';
    $zhongguo = 'china';
    $china = '我爱你';
    //别运行,自己去推理一下代码。也写几个可变变量玩玩吧!
    echo $$$$$shu;(输出是zhongguo)
  • PHP的外部变量是PHP 在使用过程中规定好的一些变量:
    应有场景:
    user.html

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html>
    <head>
    </head>
    <body>
    <form action="reg.php" method="get">
    <input type="text" name="username" />
    <input type="password" name="pwd" />
    <input type="submit" value="提交" />
    </form>
    </body>
    </html>

    reg.php

    1
    2
    3
    4
    5
    6
    7
    8
    //$_GET后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值
    $u = $_GET['username'];
    $u = $_POST['username'];
    echo $u.'<br />';
    //$_GET['pwd'] 得到表单<input type="password" name="pwd" /> 的值
    $passwd = $_GET['pwd'];
    echo $passwd.'<br />';
全局变量名 功能说明 全局变量名 功能说明
$_COOKIE 得到会话控制中cookie传值 $_SESSION 得到会话控制中session的值
$_FILES 得到文件上传的结果 $_GET 得到get传值的结果
$_POST 得到post传值的结果 $_REQUEST 即能得到get的传值结果,也能得到post传值的结果
  • 一些常用的环境变量的键名和值对应的意思:
键名 含义
$_SERVER[“REQUEST_METHOD”] 请求当前PHP页面的方法
$_SERVER[“REQUEST_URI”] 请求的URI
$_SERVER[“SERVER_SOFTWARE”] 用的是哪一种服务器
$_SERVER[“REMOTE_ADDR”] 客户的IP地址
$_SERVER[“SERVER_ADDR”] 当前服务器的IP地址
$_SERVER[“SCRIPT_FILENAME”] 当前请求文件的路径
$_SERVER[“HTTP_USER_AGENT”] 当前访问这个网址的电脑和浏览器的情况
$_SERVER[“HTTP_REFERER”] 上级来源(用户从哪个地址进入当前网页的)
$_SERVER[“REQUEST_TIME”] 当前请求时间
  • 变量引用(类似于C语言指正)
    1
    2
    3
    4
    5
    6
    7
    8
    $fo = 5;
    //注意,加上了一个&符哟
    $bar = &$fo;
    $bar = 6;
    //$bar的结果为6
    echo $bar.'<br />';
    //$fo的结果为6
    echo $fo.'<br />';

三元运算符

符号 说明
$x? 真代码段:假代码段 判断是否为真假 ? 真情况 : 假情况;
``(反引号) 反引号中间插代命令,执行系统命令,等价于shell_exec函数
@ 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用
=> 数组下标访问符
-> 对象访问符
instanceof 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false

函数

回调函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function woziji($one,$two,$func){
//我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
if(!is_callable($func)){
return false;
}
//我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
//$func是一个变量函数,参见变量函数这一章
echo $one + $two + $func($one,$two);
}
//我们定义几个函数试试
function plusx2( $foo , $bar){
$result = ($foo+$bar)*2;
return $result;
}
function jian( $x , $y ){
$result = $x - $y;
return $result;
}
//调用一下函数,woziji,向里面传入参数试试
echo woziji(20,10,'plusx2');
//将plusx2改成jian试试结果
echo woziji(20,10,'jian');

变量函数

1
2
3
4
5
6
7
8
9
10
11
function demo(){
echo '天王盖地虎';
}
function test(){
echo '小鸡炖蘑菇';
}
$fu = 'demo';
//把$fu变为了demo,把demo后加上了一个括号,就执行函数了
$fu();
//把$fu的值改为test字符串再试试?

匿名函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//1.变量函数式的匿名函数
$greet = function($name)
{
echo $name.',你好';
};
$greet('明天');
$greet('PHP学院');
//2.回调式的匿名函数
function woziji($one,$two,$func){
//我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
if(!is_callable($func)){
return false;
}
//我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
//$func是一个变量函数,参见变量函数这一章
echo $one + $two + $func($one,$two);
}
woziji(20,30,function( $foo , $bar){
$result = ($foo+$bar)*2;
return $result;
}
);

内部函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function foo()
{
echo '我是函数foo哟,调一下我才会执行定义函数bar的过程<br />';
function bar()
{
echo '在foo函数内部有个函数叫bar函数<br />';
}
}
//现在还不能调用bar()函数,因为它还不存在
bar();
foo();
//现在可以调用bar()函数了,因为foo()函数的执行使得bar()函数变为已定义的函数
bar();
//再调一次foo()看看是不是会报错?
foo();
?>

变量作用域

我们将函数体外的变量通过$GLOBALS拿到了函数体使用。所以,打破了函数外的变量不能在函数体内使用的限定。

1
2
3
4
5
6
7
8
$one = 10;
function demo(){
$two = 100;
$result = $two + $GLOBALS['one'];
return $result;
}
//你会发现结果变成了110
echo demo();

使用内置函数

主要掌握如何使用内置函数,就是会看PHP官方文档
使用函数的重点是三块:

  • 了解函数的功能,特别是常用函数的功能
  • 了解函数的参数
  • 了解函数的返回值
    针对上面的三块,讲解6个函数,这6个函数,概况了函数的基本用法的全部注意事项:
  • 直接返回布尔型,如bool copy ()
  • 带有MIXED参数的函数如何调用。Mixed表示任何类型的数据。如Array_unshift()
  • 参数中带有&符的参数,一定要传一个变量做为参数。函数里面改变了他的值。
  • 带有[]的参数,表示可选项。
  • 带有…的参数,表示可以传任意多个参数。
  • 带有callback的参数,表示回调函数。需要传一个函数进来。Array_map()
  • 函数支持的版本你要了解
1.bool copy ( string $source , string $dest [, resource $context ])

这个函数的功能为: 拷备一个文件
返回值为为: bool型值,就是成功返回true,失败返回false
参数为: 两个字符串的值,一个是copy的源文件,一个为目标文件。第三个参数可选的,不常用,我们不管它。

1
2
3
4
5
$file = 'example.txt';
$newfile = 'example.txt.bak';
if (!copy($file, $newfile)) {
echo "failed to copy $file...\n";
}

2.int array_unshift ( array &$array , mixed $value1 [, mixed $… ] )

Mixed表示任何类型的数据。
功能: 操作一个数组,向数组中之前插入其他类型的参数。
返回值: int 类型,可能就是插入成功最后的个数
参数: 第一个参数为&符,也就是在操作的过程中,改变了第一个参数的值。引用传参。也就是操作这个数组,向这个数组中传入参数。会直接改变这个数组的值。第二个参数为mixed,因为数组可以存入多个不同的类型.mixed是指混合的意思。因此,mixed是指可传入任意类型。第三个数数加了中括号,我们所有遇到中括号的。都是指后面的参数可传,也可以不传。第四,最后还看到了三个…(省略号)。代表可以传入任意多个参数。

1
2
3
4
5
6
7
8
9
10
11
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
// The above example will output:
// Array
// (
// [0] => apple
// [1] => raspberry
// [2] => orange
// [3] => banana
// )

3、bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )

功能:传入一个回调函数,将数组的原来的组操作,并且发生变化。
返回值:bool 值 也就是意味着,提示成功或者失败
参数:第一个参数是要操作的数组。第二个参数是callback 代表着可以传入函数或者匿名函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
echo "$key. $item2<br />\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
array_walk($fruits, 'test_print');
// The above example will output:
// Before ...:
// d. lemon
// a. orange
// b. banana
// c. apple
// ... and after:
// d. fruit: lemon
// a. fruit: orange
// b. fruit: banana
// c. fruit: apple

文件包含函数

函数 包含失败 特点
Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含
Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行
Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含
Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含

日期常用函数

在正式学习日期函数前大家要了解几个概念:

  • 时区:1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。在中国采用首都北京所在地东八区的时间为全国统一使用时间。
  • 世界时:如果对国际上某一重大事情,用地方时间来记录,就会感到复杂不便.而且将来日子一长容易搞错。因此,天文学家就提出一个大家都能接受且又方便的记录方法,那就是以格林尼治(英国某地区)的地方时间为标准。
  • unix时间戳:从Unix纪元(1970 年 1月1日零时)开始到一个时间经过的秒数。
    时间函数有:
  • 设置时区:
    • date_default_timezone_get()
    • date_default_timezone_set()
      1
      2
      3
      4
      5
      6
      //定义一下时区常量,以后你可以放到配置文件里
      define('TIME_ZONE','Asia/shanghai');
      //执行函数
      date_default_timezone_set(TIME_ZONE);
      echo date_default_timezone_get ();
      echo date('Y-m-d H:i:s');
  • time()获取当前的unix时间戳:time()获取当前的unix时间戳
  • getdate获取当前系统时间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $mytime= getdate();
    print_r( $mytime);
    // Array
    // (
    // [seconds] => 1 //秒
    // [minutes] => 10 //分钟
    // [hours] => 17 //小时
    // [mday] => 18 //日
    // [wday] => 0 //星期中的第几天
    // [mon] => 1 //月
    // [year] => 2015 //年
    // [yday] => 17 //年中的第几天
    // [weekday] => Sunday //星期
    // [month] => January //月份
    // [0] => 1421597401 //时间戳
    // )
    $mytime = getdate();
    echo "年 :".$mytime['year']."\n";
    echo "月 :".$mytime['mon']."\n";
    echo "日 :".$mytime['mday']."\n";
    echo "时 :".$mytime['hours']."\n";
    echo "分 :".$mytime['minutes']."\n";
    echo "秒 :".$mytime['seconds']."\n";
    echo "一个小时中的第几钟 :".$mytime['minutes']."\n";
    echo "这是一分钟的第几秒 :".$mytime['seconds']."\n";
    echo "星期名称 :".$mytime['weekday']."\n";
    echo "月份名称 :".$mytime['month']."\n";
    echo "时间戳 :".$mytime[0]."\n";
  • 日期验证函数:bool checkdate ( int $month , int $day , int $year )

  • mktime()函数可以对一个日期和时间获得一个本地化时间戳:int mktime (int $hour [, int $minute [, int $second [, int $month [, int $day [. int$year [, int $.is_dstl.l } ] ] 31 )
  • 将英文文本的日期时间描述解析为 Unix 时间戳:int strtotime ( string $time [, int $now = time() ] )
  • 程序执行时间检测,microtime()这个函数,能够返回当前 Unix 时间戳和微秒数:mixed microtime ([ bool $get_as_float ] )

字符串常用函数

声明:

内容参考:《7天学会PHP》