zoukankan      html  css  js  c++  java
  • 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”;

  • 相关阅读:
    angularJS1遍历
    IDEA配置Tomcat
    IDEA配置JDK
    序列化
    servlet,filter,listener,intercepter区别
    textarea文本域值中含有大量 问题
    struts标签与jstl标签互换
    Struts/Hibernate/Spring源码下载
    捕获浏览器关闭、刷新事件,在窗体关闭时从全局对象里移除当前用户
    生成jsp验证码的代码详解(servlet版)
  • 原文地址:https://www.cnblogs.com/John-/p/6947533.html
Copyright © 2011-2022 走看看