首页 > 技术文章 > 阐述php(五岁以下儿童) 注意事项和使用功能

gcczhongduan 2015-09-15 15:24 原文

1、函数声明

<?php

	/**
	 * function 函数名(參数1, 參数2.... ){
	 *  	函数体;
	 *  	返回值;
	 * }
	 */
	
	$sum = sum(3, 4);
	echo $sum;
	
	function sum($x, $y){
		$sum = 0;
		$sum = $x * $x + $y + $y;
		return $sum;
	}
?>

2、变量的范围

局部变量: 在函数中声明的变量就是局部变量, 仅仅能在自己的函数内部使用
全局变量: 在函数外声明的变量就是全局变量, 在变量声明以后直到整个脚本结束前都能够使用, 包含在函数中和 { } 中都可使用

2.1 知识点: 我们无法分辨出PHP的变量是声明还是使用

<?php
	$a = 10;
	function demo($a){
		$a += 10;
		echo $a . '<br>';
	}
	demo($a);
	echo $a;
	// 结果: 20, 10
	// PHP的变量分不出 $a 是声明还是使用
?

>

2.2 知识点: 函数中使用全局变量必须使用globalkeyword, 在声明global之后的变量才是全局的变量

<?php
	$a = 10;
	
	function demo() {
		global $a;
		$a += 10;
		echo $a . " demo <br>";
	}
	
	function test() {
		global $a;
		$a += 5;
		echo $a . "test <br>";
	}
	
	echo $a . " ----<br>";  // 10 ----
	demo();                 // 20 demo 
	echo $a . " !!!!<br>";  // 20 !!!!
	demo();                 // 30 demo 
	echo $a . " @@@@<br>";  // 30 @@@@
	test();                 // 35 test 
	echo $a . " ####<br>";  // 35 ####
?

>

静态变量: 仅仅能声明在函数中(类中), 不能在全局声明, 变量前使用statickeyword修饰

2.3 知识点: 静态变量在静态代码块中存储, 它的值能够一个函数多次调用之间共享, 但仅仅在第一次调用函数时声明到内存

以后再调用时就不再声明而直接使用(和Java类似)

<?php
   function test(){
	   static $a = 0;
	   $a++;
	   echo $a."<br>";
   }

  test(); // 1
  test(); // 2
  test(); // 3
?>

3、变量函数

事实上这个和JS又非常类似, 比如: 定义$var = hello, 下次使用$var()时就将寻找与变量值同名的函数hello()

<?

php function one($a, $b){ return $a + $b; } function two($a, $b){ return $a * $a + $b * $b; } function three($a, $b){ return $a * $a * $a + $b * $b * $b; } //$var = one; //$var = "two"; $var = three; echo "结果:".$var(3, 4)."<br>"; // 91 ?>


4、系统函数

4.1 常规函数  
     bool copy (string source, string dest)

4.2 带有mixed, mixed表示能够传不论什么类型的数据
      bool chown (string filename, mixed user)
       

4.3 带有&參数的函数, 表示引用赋值, 这个參数不能传值, 仅仅能传一个变量。然后函数将变量的值改变。

      我们在使用这个变量时,值也是变化的(和Java中传引用又是一样的)

      bool arsort (array &array [, int sort_flags])
<?php
	$arr=array(1, 9, 5, 8, 3, 4);
	sort($arr);
	print_r($arr);
?>
4.4 默认函数, 带有[]的函数, 表示这个參数是可选的,假设你传值了就使用你传的值,假设没有传值则使用默认值
     bool arsort (array &array [, int sort_flags])

<?php
	function demo($a=1, $b=20, $c){
		echo "### $a ### $b ### $c ###<br>";
	}	
	demo(8,9);
?>
4.5 带有...的參数函数。 ...表示能够传随意多个參数
      int array_unshift (array &array, mixed var [, mixed ...])

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

4.6 回调函数 带有callback,  就是调用这个函数时须要我们传一个函数进来(函数名,函数名字串)
      array array_filter (array input [, callback callback])

<?php
   function demo($n){
	   	if($n % 2== 0){
			return true;
	   	}else{
			return false;
	   	}
   }
   
   $a = array(1, 2, -3, 4, -5, 6, -7, 8, 9);
   print_r(array_filter($a, demo));  // Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 ) 
?

>


5、内部函数

php能够在函数内部再声明函数, 目的就是在函数的内部调用以帮助外部函数完毕一些子功能.

<?php
	function score($php, $java) {
		function php($php) {
			if ($php > 60)
				return "及格";
			else
				return "不及格";
		}
		
		function java($java) {
			if ($java > 60)
				return "及格";
			else
				return "不及格";
		}
	
		$total = $php + $java . "分";
		$agv = $total / 2  . "分";
		echo "你的php成绩是 {$php} 分, " . php($php) . "<br>";       // 调用内部函数 php()
		echo "你的java成绩是 {$java} 分, " . java($java) . "<br>";   // 调用内部函数 java()
		echo "你的总分是: {$total} <br>";
		echo "你的平均分是:{$agv} <br>";
	}
	
	score(50, 90);
?

>


6、递归函数

所谓的递归函数就是在自己的内部调用自己的函数

<?php
    function demo($num){
    	echo $num."<br>";
		if($num > 0){
			demo($num - 1);   // 自己调用自己
		}else{
			echo "--------------------<br>";
		}
	
		echo $num."<br>";
    }

    demo(3);
    
	/*
		3
		2
		1
		0
		--------------------
		0
		1
		2
		3
	*/
?>

7、重用函数

所谓的重用函数事实上就是把php, html, txt等文件或者其它文件include进来

require:    用于静态包括(如文件头, 文件尾等固定的东西)

include:    用于动态包括(不确定的文件名称)

require_once: (仅仅包括一次, 不存在函数名冲突问题, 但性能没require高)

include_once: (同上)

用法: include "config.inc.php";     include("config.inc.php")

<?php
   include_once "test.inc.php";
   echo $a."<br>";
   test();
   
   /*
	    10
		##############
    */
?>
test.inc.php

<?php
	$a=10;

	function test(){
		echo "##############<br>";
	}
?>


版权声明:本文博主原创文章。博客,未经同意不得转载。

推荐阅读