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

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/John-/p/6947533.html
Copyright © 2011-2022 走看看