About_PHP_函数
关于验证码的完善:
//生成干扰线 $posLineX1 = rand(12,50); $posLineX2 = rand(50,110); $posX = rand(10,50); for($i=0;$i<5;$i++){ $posLineY1 = rand(2,10); $posLineY2 = rand(10,30); imageline($im,$posLineX1,$posLineY1,$posLineX2,$posLineY2,$two2); $posLineX1 += rand(9,40); $posLineX2 += rand(45,100); } //生成点点 for($i=0;$i<100;$i++){ $two3 = imagecolorallocate($im,rand(0,239),rand(0,239),rand(0,239)); imagesetpixel($im, rand(7,150), rand(7,70),$two3); } //文字位置不一样 $posX = rand(10,50); for($i=0;$i<5;$i++){ $posY = rand(10,50); imagestring($im,rand(3,5),$posX,$posY,substr($rand,$i,1),$two); $posX += rand(8,30); }
关于函数:
函数的作用是重复和调用;
<?php function result(){ echo "hello!kitty"; } ?> <!--如果要调用result,直接用result();结果输出hello!kitty-->
定义常量我们经常用:const和define,const只可放在代码的最上面。
在函数里面用全局变量,要用global声明:
$conn = ""; function close(){ global $conn; mysql_close($conn); }
include("dbhelper.php");等同于require_once("function.php");
explode
array explode(string $delimiter,string $string [,int $limit]);
此函数返回有字符串组成的数组,每个元素都是string的一个子串,它们被字符串delimiter作为界点分割出来;
delimiter:边界上的分隔字符。
string:输入的字符串。
limit:如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
如果 limit 是 0,则会被当做 1。
1 <?php 2 // 示例 1 3 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6" ; 4 $pieces = explode ( " " , $pizza ); 5 echo $pieces [ 0 ]; // piece1 6 echo $pieces [ 1 ]; // piece2 7 8 // 示例 2 9 $data = "foo:*:1023:1000::/home/foo:/bin/sh" ; 10 list( $user , $pass , $uid , $gid , $gecos , $home , $shell ) = explode ( ":" , $data ); 11 echo $user ; // foo 12 echo $pass ; // * 13 14 ?>
implode: 将一个一维数组的值转化为字符串
string implode ( string
$glue
, array $pieces
)string implode ( array
$pieces
)用
glue
将一维数组的值连接为一个字符串。glue:默认为空的字符串。
pieces:
你想要转换的数组。 //例子 <?php $a1 = array("1","2","3"); $a2 = array("a"); $a3 = array(); echo "a1 is: '".implode("','",$a1)."'<br>"; echo "a2 is: '".implode("','",$a2)."'<br>"; echo "a3 is: '".implode("','",$a3)."'<br>"; ?>
<?php $arr =array(1,2,3,4); echo vsprintf("%d-%d",$arr);//输出1-2 echo vsprintf("%d-%d-%02d",$arr);//输出1-2-03 ?>
1 <?php 2 function test1($str1="",$str2=array()){ 3 //把数组分割成字符串 implode 4 //下个这个方法的意思是:$str2应该是个数组 5 //然后把这个数组按照逗号来分割组成一个新的字符串 6 $s1 = implode(",",$str2); 7 // echo $s1; 8 9 //把字符串分割成数组 explode 10 //这个函数的意思就是:首先$str1是一个字符串,这个字符串是按照一个规格组装出来的 11 //这个规格就是必须符合前面第一个参数的样式 12 $s2 = explode("-",$str1); 13 14 print_r($s2); 15 } 16 17 //函数的默认值 18 function test2($db="bbs"){ 19 $conn = mysql_connect(HOST,USER,PWD) or die(mysql_error()); 20 mysql_select_db($db,$conn); 21 mysql_query("set names 'utf8'"); 22 } 23 24 function test3($str="hello world"){ 25 echo $str; 26 } 27 28 function formatDateTime($date){ 29 $arr = explode("-",$date); 30 $str = vsprintf("%04d-%02d-%02d",$arr); 31 return $str; 32 } 33 34 35 //获取函数全部参数 36 //获取传过来的所有参数 37 function test4(){ 38 //获取传过来参数的数量 39 $num = func_num_args(); 40 //获取所有传入的参数,返回的是一个数组 41 $arr = func_get_args(); 42 43 var_dump($arr); 44 } 45 46 function mysql_ping(){ 47 //获取传入的所有参数的数组 48 $arr = func_get_args(); 49 //获取第一个参数,在我们这个列子里面,第一个参数其实就是sql语句 50 $sql = $arr[0]; 51 //传入的sql语句,其实开始是用?替代的变量的位置 52 //这里需要将变量转化为可以替换格式化字符串的'%s'这样的符号 53 $sql = str_replace("?","'%s'",$sql); 54 55 //array_shift,是将数组最开始的元素移出。返回移出的值,然后数组剩下其余的部分 56 $values = array_shift($arr); 57 58 $sql = vsprintf($sql,$arr); 59 60 echo $sql; 61 } 62 63 64 65 66 ?>