记录我工作学习生活中的点点滴滴......

PHP你所忽视掉的函数的参数。
发布于 基础编程
2013-05-14 11:09:53
6871
17

PHP提供了很多的函数,当然函数的参数也很多,按照我们著名的28原则,可选参数很少用到,甚至我们都忽略了可选参数的存在,可是在很多情况下可选参数发挥了巨大的作用,下面简单列举几个来说明。

1、mkdir

很多地方讲PHP的递归都是用递归创建目录作为例子的,殊不知,mkdir自带了递归创建目录的功能,就是他的第三个参数。

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
$recursive在手册中解释为“Allows the creation of nested directories specified in the pathname”,注意到了么?
//会提示错误
mkdir('a/b/c/d/e');
//下面这个则会创建成功
mkdir('a/b/c/d/e',0755,true);
2、json_decode

一个array经过json_encode之后在json_decode变成了object,不少人吐槽过这个不人性化的设定吧?看看手册中这个函数的参数列表:

//接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

我们来看第二个参数的含义“当该参数为 TRUE 时,将返回 array 而非 object 。”,现在知道怎么做了吧?

3、str_replace

我想很多人看到过这样的写法

$str=str_replace('a1','b1',$str);
$str=str_replace('a2','b2',$str);
$str=str_replace('a3','b3',$str);

$str=str_replace('a1','b',$str);
$str=str_replace('a2','b',$str);
$str=str_replace('a3','b',$str);

我想这些人一定没有仔细看过手册中的str_replace的函数吧?

//该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。 
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

ok,看到了$search,$replace的类型为mixed了吧?
上面的我们可以这样简写

$str=str_replace(array('a1','a2','a3'),array('b1','b2','b3'),$str);

$str=str_replace(array('a1','a2','a3'),'b',$str);

还有第四个参数,替换次数,你注意到了么?

这样的例子还有很多,不要简简单单的知道函数的作用就以为了解了这个函数,当中还有很多你未曾注意到的东西,了解这些细节,可以让你更好的掌握PHP。在这之前,首先保证你有一份最新的手册,不要拿着几年前的手册去看那些陈旧的东西了,php手册最新版下载地址:http://cn2.php.net/get/php_enhanced_zh.chm/from/a/mirror



分享本文到:
除非特殊注明,本文版权归原作者所有,欢迎转载!转载请注明版权以及本文地址,谢谢。
转载保留版权:Pakey's BLog >>基础编程 >>PHP你所忽视掉的函数的参数。
本文地址:http://www.pakey.net/blog/php-function-default-param.html