PHP常用的系统内置函数

一、时间日期函数

(1)date() 格式化一个本地时间/日期

string date ( string $format [, int $timestamp ] )

返回将整数 timestamp
按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp是可选的,默认值为time()
示例:

<?php
date_default_timezone_set('UTC');
echo date("Y-m-d H:i:s",time()),"\n";
echo date("Y-m-d H:i:s",time()-3600*24),"\n";
echo date("Y-m-d H:i:s",strtotime("-1 day")),"\n";
echo date("Y-m-d H:i:s",strtotime('1991-06-07 19:44:22')),"\n";
echo date("Y-m-d H:i:s",strtotime('1991-06-07 19:44:22')+3600*24),"\n";

运行结果:

[root@chen function]# php demo3.php
2017-09-29 07:18:27
2017-09-28 07:18:27
2017-09-28 07:18:27
1991-06-07 19:44:22
1991-06-08 19:44:22 

(2)strtotime()
将任何字符串的日期时间描述解析为 Unix 时间戳
int strtotime ( string $time [, int $now = time() ] )
示例:

<?php
echo strtotime('now');//1506669818

(3)mktime()
取得一个日期的 Unix 时间戳
(4)time()

int time ( void )

返回当前的 Unix 时间戳
(5)date_default_timezone_set()
设定用于一个脚本中所有日期时间函数的默认时区
示例:

date_default_timezone_set('UTC');

2、ip处理函数

(1)ip2long
(2)long2ip

3、打印函数

print(),print_r(),printf(),echo,sprintf(),var_dump()

(1)print 和echo都是表达式语句,但print只能有一个参数,echo可以打印多个参数

<?php
$name = "chenzhitao";
$age = 26;
print($name);
print($age);
//print($age,$name)//error
//print $name,$age;
echo $name,$age;
//echo ($name,$age);//error

(2)printf()会格式化 输出,sprintf()不会打印,只会返回一个格式化字符串

<?php
$name = "chenzhitao";
$age = 26;
/*
print($name);
print($age);
//print($age,$name)//error
//print $name,$age;
echo $name,$age;
*/
printf("%s:%d\n",$name,$age);
$info =sprintf("%s:%d\n",$name,$age);
print $info;

运行结果:

[root@chen function]# php demo5.php
chenzhitao:26
chenzhitao:26

(3)print print_r() var_dump()

$a = array(1,2,3,4);
print $a;//只会输出类型
print_r($a);//格式化数组打印
var_dump($a);

运行结果:

ArrayArray
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}

4、序列化函数和反序列化函数

(1)serialize
产生一个可存储的值的表示
serialize() 返回字符串,此字符串包含了表示 value
的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
想要将已序列化的字符串变回 PHP 的值,可使用unserialize serialize() 可处理除了resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组对象中的引用也将被存储。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。
(2)unserialize()
示例:

<?php
//声明一个类
class dog {

    var $name;
    var $age;
    var $owner;

    function dog($in_name="unnamed",$in_age="0",$in_owner="unknown") {
        $this->name = $in_name;
        $this->age = $in_age;
        $this->owner = $in_owner;
    }

    function getage() {
        return ($this->age * 365);
    }
    
    function getowner() {
        return ($this->owner);
    }
    
    function getname() {
        return ($this->name);
    }
}
//实例化这个类
$ourfirstdog = new dog("Rover",12,"Lisa and Graham");
//用serialize函数将这个实例转化为一个序列化的字符串
$dogdisc = serialize($ourfirstdog);
print $dogdisc; //$ourfirstdog 已经序列化为字符串 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}

print '<BR>';

/* 
-----------------------------------------------------------------------------------------
    在这里你可以将字符串 $dogdisc 存储到任何地方如 session,cookie,数据库,php文件 
-----------------------------------------------------------------------------------------
*/

//我们在此注销这个类
unset($ourfirstdog);

/*    还原操作   */

/* 
-----------------------------------------------------------------------------------------
    在这里将字符串 $dogdisc 从你存储的地方读出来如 session,cookie,数据库,php文件 
-----------------------------------------------------------------------------------------
*/


//我们在这里用 unserialize() 还原已经序列化的对象
$pet = unserialize($dogdisc); //此时的 $pet 已经是前面的 $ourfirstdog 对象了
//获得年龄和名字属性
$old = $pet->getage();
$name = $pet->getname();
//这个类此时无需实例化可以继续使用,而且属性和值都是保持在序列化之前的状态
print "Our first dog is called $name and is $old days old<br>";
print '<BR>';
?>

运行结果:

O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3:"age";i:12;s:5:"owner";s:15:"Lisa and Graham";}
Our first dog is called Rover and is 4380 days old<br>

5、字符串处理函数

(1)impolde()
将一个一维数组的值转化为字符串

string implode ( string $glue , array $pieces )

示例:

<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// Empty string when using an empty array:
var_dump(implode('hello', array())); // string(0) ""

(2)explode()
使用一个字符串分割另一个字符串

array explode ( string $delimiter , string $string [, int $limit ] )

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

<?php
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>

(3)join()
别名 implode
(4)strrev()
反转字符串

string strrev ( string $string )

(5)trim() ltrim() rtrim()
去除字符串首尾处的空白字符(或者其他字符)
(6)strstr()
查找字符串的首次出现,返回值是字符串

<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // 打印 @example.com

$user = strstr($email, '@', true); // 从 PHP 5.3.0 起
echo $user; // 打印 name
?>

6、数组的处理函数

(1)array_keys()
返回数组中部分的或所有的键名
(2)array_values()
返回数组中所有的值
(3)array_key_exists
检查数组里是否有指定的键名或索引

bool array_key_exists ( mixed $key, array $array)

(4)array_rand()
从数组中随机取出一个或多个单元
(5)sort()
排序
(6)array_diff()
计算数组的差集

array array_diff ( array $array1 , array $array2 [, array $... ] )

对比 array1 和其他一个或者多个数字,返回在 array1 中但是不在其他 array 里的值。

<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

运行结果:

Array
(
    [1] => blue
)

(7)array_intersect
计算数组的交集
array array_intersect ( array $array1 , array $array2 [, array $... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>

运行结果:

Array
(
    [a] => green
    [0] => red
)

(8)array_merge()
合并一个或多个数组
array array_merge ( array $array1 [, array $... ] )
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
(9)array_shift()
将数组开头的单元移出数组

mixed array_shift ( array &$array)

array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

(10)array_unshift()
在数组开头插入一个或多个单元

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

array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

运行结果:

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

(11)array_pop()
(12)array_push()

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

推荐阅读更多精彩内容

  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,365评论 0 20
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 1,984评论 1 24
  • PHP数组函数,摘录于PHP手册 1、array_change_key_case (PHP 4 >= 4.2.0,...
    kotlin360阅读 706评论 2 1
  • 一、Array_key_exists();检查给定的键名或索引是否存在于数组中二、array_keys ()返回数...
    peng_js阅读 325评论 0 0
  • 一、 时间日期函数 date — 格式化一个本地时间/日期string date ( string $format...
    陈智涛阅读 815评论 0 0