2017.6.5-1-php函数应用及流程控制
1.php中全局变量不能在函数中使用,函数内的同名变量相当于新声明的两个变量,没有赋值,相当于两个空值在运算。
需要用global函数定义
或使用自定义数组访问。$GLOBALS['one'] 或$GLOBAL["one"];
2.<hr>
echo "<hr>"; //(horizontal rule).
3.
php中默认的是按值传递参数。
function test($arg){
$arg=200;
}
$var = 100;
test($var);
test(100); //可直接传值
echo $var; //不变
-----------------------------------
改变全局变量:
function test1(&$arg){
$arg = 200;
}
$var =100;
test1($var); //不能直接传值
echo $var; //200 ,
----
php中有很多这样的系统函数。传递一个变量给应用参数,在函数中改变参数变量的值,则传递的变量也会改变、
例如sort(),key()等函数。
<?php
$arr=array{1,5,8,4,6,2,9};
print_r($arr); //排序前
sort($arr);
print_r($arr);
-------------------------
echo 不是函数,没有返回值。
print是函数,有返回值,只能打印简单类型变量的值。(如字符,数字)
print_r 可打印复杂类型变量的值。(如数组,对象)
----------------------------------------------
默认参数的函数
参数是从左到右依次配对,若实参少于形参,则右边的形参不会传值。
function person($name=“张三”,$age,$sex){}
person("李四"); //后面的参数没有传递,出现警告
---------------------------------
可变参数函数
使用func_get_args(),他可以将所有传递给函数的参数当做一个数组返回。
使用func_num_args(),返回所有参数的数量。
function more_args(){
echo "the number of the parameters".count( func_get_args() );
}
--------------------------------------
回调函数:
1.变量函数。
将函数名以字符串方式赋给变量$result,然后使用变量名$result()来执行与字符串同名的函数。
function one($a,$b){return $a+$b;}
$result="one";
echo $result(2,3);
2.应用回调函数
function filter($fun){
for($i=0;$i<=100;$i++){
if($fun($i))
continue;
echo $i;
}
founction one($num){
return num%3==0;
}
founction two($num){
return $num==strrev($num);
}
fliter("one");
fliter("two");
3.使用系统函数call_user_func_array()回调。
if(call_user_func_array($fun,array($i)) //其中$fun是调用的函数名,array是传入的参数数组。
代替
if($fun($i))
4.类静态方法和对象的方法回调
class test1{
static function fun($arg1,$arg2){}
}
class test2{
function fun($arg1,$arg2){}
}
call_user_func_array( array ("test1", "fun"), array("参数1","参数2"));
静态方法:(类名称字符串,方法名称字符串),(参数1,参数2)
call_user_func_array( array (new test2(),"fun"), array("参数","参数2");
实例对象成员方法:(对象引用,方法字符串),(参数1,参数2)
---------------------------------
使用自定义函数库。
通常将多个自定义的函数组织到同一个文件或多个文件中。这些收集函数定义的文件就是php的函数库。
require()性能与include()类似,都是包括并运行指定文件。
不同之处在与,require()执行文件时每次都要进行读取和评估,include()则直接用文件内容替代。
include()通常放在文件最前面,程序执行时,会先读入include()语句所引入的文件,使之变为脚本的一部分。
require()通常放在流程控制的处理区段。
require()和include()语句是语言结构,不是函数。如echo()。也可require “other.php”;