php函数初步

攒了一天才写,拖延症害死人==

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);






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值