笨鸟学php(五) 函数的声明与使用

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 知识点: 函数中使用全局变量必须使用global关键字, 在声明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 ####
?>

静态变量: 只能声明在函数中(类中), 不能在全局声明, 变量前使用static关键字修饰

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

笨鸟学php(五) 函数的声明与使用

时间: 2024-12-15 07:35:12

笨鸟学php(五) 函数的声明与使用的相关文章

笨鸟学php(六) 数组

一.数组概述 1.1 数组是复合类型 1.2 数组中可以存储任意长度的数据, 也可以存储任意类型的数据 二.数组的类型 2.1 索引数组: 下标是顺序整数作为索引 <?php $user[0] = 1; $user[1] = "zhangsan"; $user[2] = "[email protected]"; echo '<pre>'; print_r($user); echo '</pre>'; ?> 2.2 关联数组: 下标

笨鸟学php(三) 运算符与表达式

一.算术运算符    +   -  *  /  %  ++  -- <?php $a = 100; $a++; // $a=$a+1; 先用变量再自增1 ++$a; // $a=$a+1; 先用自增1再用变量 $a--; // $a=$a-1; 先用变量再自减1 --$a; // $a=$a-1; 先用自减1再用变量 echo "a = ".$a."<br>"; // 100 $b = $a % 3.3; // % 会把两边的数转为整数后再进行整除

笨鸟学php(二) 如何使用变量

一. 变量的声明 1. php中声明变量的方法:  $var = 123; 2. php是弱类型的语言, 变量的类型由存储的值决定 注: Java是强类型语言, 声明变量一定要先指定类型 3. isset() 和 unset() isset() : 判断值是否存在;    unset() : 去掉变量的值 <?php $a = $b = $c = $d = "hello, world"; unset($a); if(isset($a)){ echo $a; }else{ echo

笨鸟学php(四) 流程控制

一.选择结构 1. 单路分支 <?php if(条件){ 执行一条语句; } ?> 2. 双路分支 <?php if(条件) 执行一条语句; }else 执行一条语句; } ?> 3. 多路分支 <?php if(条件){ 执行一条语句; }elseif(条件){ 执行一条语句; }elseif(条件){ 执行一条语句; }else if(条件){ 执行一条语句; }else{ 执行一条语句; } ?> <?php switch(变量){ case 值1: 代码;

Java程序员从笨鸟到菜鸟之(十三)java网络通信编程

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 首先声明一下,刚开始学习java网络通信编程就对他有一种畏惧感,因为自己对网络一窍不通,所以...呵呵..你懂得,昨天又仔细的学习了一遍,感觉其实java网络编程也没想象的那么难,不信,咱一起看看...呵呵.. 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大

PostgreSQL学习手册(五) 函数和操作符

PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:    常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:    下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如

Mina、Netty、Twisted一起学(五):整合protobuf

protobuf是谷歌的Protocol Buffers的简称,用于结构化数据和字节码之间互相转换(序列化.反序列化),一般应用于网络传输,可支持多种编程语言. protobuf怎样使用这里不再介绍,本文主要介绍在MINA.Netty.Twisted中怎样使用protobuf,不了解protobuf的同学能够去參考我的还有一篇博文. 在前面的一篇博文中.有介绍到一种用一个固定为4字节的前缀Header来指定Body的字节数的一种消息切割方式.在这里相同要使用到. 仅仅是当中Body的内容不再是字

【基础】函数的声明&amp;返回值

以加减乘除运算为例 /* 函数的一般形式: 类型标示符 函数名(形式参数,形式参数...){ 函数体 } 类型表示符 为 该函数返回值的类型 不返回任何值的函数,返回值类型可以用void表示 void 函数名(){ } */ /* 函数的声明及调用: 引用空间: 函数名(形式参数,形式参数...);//声明函数 主函数(){ 函数名(实际参数,实际参数...);//在主函数中调用函数 } 函数名(形式参数,形式参数...) { 函数体 }//声明函数 函数声明时可以省略变量名 int Demo(

这本Python入门畅销书《“笨办法”学python 3》,不仅仅是一本书

此前,小编分享过一篇文章<跟着数百万人编程导师学C语言!>,介绍的是泽德 A. 肖大神的新书<"笨办法"学C语言>很多用户在后台留言,<"笨办法"学Python 3>什么时候出版?今天这本书终于在六月初与大家见面啦,与作者其他的图书风格一样,<"笨办法"学Python 3>也不仅仅是一本书,随书附赠5个多小时充满激情的视频,这是一套完整的Python语言视频课程! 纯正的美式发音,中文字幕,边看边练