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

 

posted @ 2017-06-05 23:01  John_leaf  阅读(191)  评论(0编辑  收藏  举报