您的位置:首页 > 编程语言 > PHP开发

php函数初步

2015-12-16 11:37 555 查看
攒了一天才写,拖延症害死人==

php中允许先写调用函数,下面再写函数的定义(同Java) 形参 实参什么的也同C
但是函数名不区分大小写!!!


先介绍一个实用的,把用php写的字符串(本文中用的是一个表格,本质不也是字符串嘛)转存成html文档的函数:file_put_contents(),第一个参数写html文件名,第二个是个字符串

<meta charset="UTF-8">//这句话在PHP外面写!!!
<?php

error_reporting(0);

echo table("用户表",10, 10, 2, 'red', 1, 800, 'left'); //实参 (实际的参数)

file_put_contents("demo.html", table("成绩表", 50, 5, 3, 'green', 10, 400, 'right'));

//声明函数时,提供的参数, 形参(形式上的参数)
function table($tablename, $rows, $cols, $num, $color, $border, $width, $align){

$str .= '<table border="'.$border.'" width="'.$width.'" align="'.$align.'">';
$str .= '<caption><h1>'.$tablename.'</h1></caption>';

for($i=0; $i<$rows; $i++) {//一定记得是$i 不是i!
$bg = ($i%$num==0) ? $color : "";

$str.= '<tr bgcolor="'.$bg.'">';
for($j=0; $j < $cols; $j++ ) {
$str .= '<td>'.($i*10+$j).'</td>';
}
$str .= '</tr>';
}

$str .= '</table>';

return $str;

echo "#################";//证实return之后的不执行……废话
}





分析一下代码都啥意思吧

函数参数果断忽略掉,没啥不会的,记得之前说过双引号有解析字符串的功能吧,所以所有被双引号(都是函数参数,变量)都被解析成对应的值啦

为啥成绩表:


长得和用户表不一样……参数不一样啊

再介绍一个function_exists()判断函数是否存在。“"里面放函数名 没括号

再有就是:在PHP中,只有函数内部的是局部变量!!!若想在函数中不用同名的局部变量,用全局的 前面加global!

而$_POST()   $_GET() 本来就是全局的,不用加

例子:

$_POST['a']=100;
$_GET['b']=300;

function demo() {

echo $_POST['a'];

}

demo();

静态变量 没啥好说的:
<?php
/*
* 静态变量
*
*
* 1. 在函数中声明的静态变量, 只在第一次调用时声明.
* 2. 第二次以后, 一看是静态变量, 就先到静态区中,看一下有没有这个变量, 如果有就使用, 而不去再声明
* 3. 静态变量,在同一个函数多次调用中 共享
*
*
*/

static $c=99;

function demo() {
static $a = 0;

$a++;

echo $a."<br>";

}

function test() {
static $a = 0;

$a++;
}

echo $c;

demo();
demo();

test();
test();
test();
test();

demo();
demo();
demo();

伪类型参数的函数:
伪类型参数的函数格式说明:
 mixed funName(mixed $a, number $b, callback $c) 

PHP是弱类型语言,不仅在声明变量时不需要指定类型,当然在声明函数时也不需要指定类型,所以在PHP中函数的每个参数,都可以为其传递任意类型的值。

三种伪类型: mixed、number 和 callback。

bool empty(mixed $var)    //检查一个变量是否为空

bool usort(array &$array,callback $cmp_function)
//使用用户自定义的比较函数对数组中的值进行排序

number abs(mixed $number)  //绝对值

引用参数

<?php
/*
* $a = 10;
*
* $b = &$a;
*
* $a = 400;
* $b = 800;
*
* 1. 只有在内存中的变量, 才有地址
* 2. 有引用关系的两个变量, 一个变, 另一个就变, 相当于两个是一个
*
*
* 如果在函数说明中, 有&出现, 说明这个参数是一个引用参数, 你调用时传参数时, 就必须传一个变量
*
*/

$a= 20;

function demo(&$a) {
$a = 100;
}

echo $a."<br>";

demo($a);

echo $a."<br>";

默认参数:顺序很关键 ;省略同c++ ;系统中的省略用【】表示了
<?php
/*
* 默认参数
*
* demo(string $name, int $age, [string $sex, [$string $email]]);
*
*
* */

function demo($name, $age, $sex ="three", $email="four") {

echo "{$name}--{$age}---{$sex}---{$email} <br>";
}

demo("妹子", 20);
demo("妹子", 20, "女");
demo("妹子", 20, "女", 'mz@lampbrother.net');

可变参数:接收数组用:$arr=func_get_args(); 好处是不用考虑参数对应
<?php
/*
* 可变参数
*
* number demo([number $...])
*
*/

function demo() {

$sum = 0;

for($i=0; $i<func_num_args(); $i++){
$sum +=func_get_arg($i);
}

return $sum;

}

echo demo(1,2,3,4,5,6,7,8,9,0);

变量函数:很重要!
<?php
/*
* 如果将一个函数名称(字符串), 给一个变量(字符串), 然后在这个变量后面加上括号, 就会调用这个变量值对应函数
*
*
*/

function add($a, $b) {
return $a + $b;
}

function chen($a, $b) {
return $a * $b;
}

function chu($a, $b) {
if($b!=0)
return $a/$b;
else
return false;
}

$var = "add";
$var = "chen";
$var = "chu";

echo $var(10, 20);

chu(10, 20);


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: