PHP函数

作者: 爱折腾的傻小子 | 来源:发表于2016-11-08 16:28 被阅读54次

    Array常用函数:

    • array_diff( $arr1, $arr2 [,...] ):计算数组的差集。
      • 返回在 $arr1 中但是不在 $arr2 及任何其它参数数组($arr3,...)中的值。
      • array_diff():函数,比较的是,与键无关。(字符串时区分大小写的)
      • array_diff():函数,返回的键是在$arr1中的键。
      • array_diff():函数,比较的是一维数组。(就是最外面的)
      • 案例(PHP代码):
    <?php
          $arr1 = ['php'=>'PHP', 'C'=>'c', 'Js', 'C++', 'Node.js'];
          $arr2 = ['code'=>'PHP','python', 'C++'];
          $arr3 = ['Green', 'Blue', 'skip'];
          var_dump( array_diff($arr1, $arr2, $arr3) );
    ?>
    

    运行结果:

    array(3) { 
          ["C"]=> string(1) "c" 
          [0]=> string(2) "Js" 
          [2]=> string(7) "Node.js" 
    }
    

    1.array_diff():返回的是第一个数组中的元素。
    2.array_diff():比较的是,而不是键。(如:'php'=>'PHP'和'code'=>'PHP',就是相同)
    3.array_diff():返回的键,是在$arr1中元素对应的键。(如:[0]=>"Js",[2]=>"Node.js"都和$arr1中一致)
    4.array_diff():需要参数类型是数组(Array)。(字符串类型或其他的都不得行,结果返回NULL

    • array_diff_assoc( $arr1, $arr2 [,...] ):计算数组的差集。
      • 与array_diff():函数的区别在于,这次比较的是键和值都必须一致。
      • 其他特点,和array_diff()函数一致。
    <?php
          $arr1 = ['php'=>['PHP','S'=>'S'], 'C'=>'c', 'C++', 'Js', 'Node.js'];
          $arr2 = ['code'=>'PHP','python', 'C++'];
          $arr3 = ['Green', 'Blue', 'skip'];
          var_dump( array_diff_assoc( $arr1, $arr2, $arr3) );
    ?>
    

    运行结果:

    array(5) {
        ["php"] => array(2) {
            [0] => string(3) "PHP"
            ["S"] => string(1) "S"
          }
         ["C"] => string(1) "c"
         [0] => string(3) "C++"
         [1] => string(2) "Js"
         [2] => string(7) "Node.js"
    }
    

    1.从($arr1和$arr2的C++)中,可以看到array_diff_assoc()函数比较的时键。(要求时键和值都一致,才认为匹对成功)


    • isset():检查变量是否存在:
    bool isset(mixed $var [,mixed $...])  //> php函数语法
    
    • 可以同时检查多个变量是否存在。(and关系)
    • 该函数只能检测变量
    • 如果var不存在或者为NULL,返回 false;如果var存在,返回 true
    <?php
    //> 变量不存在或值为NULL时,isset()返回false
    $nu = null;
    var_dump( isset($nu) );  //> false
    var_dump( isset($sm) );  //> false
    //> isset(NULL):出现程序错误;isset()只能解析变量
    //> isset()支持多变量检查。(and关系)
    $asd = "";
    $dsa = 'php';
    var_dump( isset($asd,$dsa) ); //> true
    var_dump( isset($nu,$asd) );  //> false
    ?>
    
    • NULL0 ''等是有区别的。
    • isset()无法区别变量是存在还是为NULL值。(我们可以使用 === 区分或使用 is_null(mixed $var)
    $nu = null;
    var_dump( is_null( $null ), is_null(null));  //> true true
    //> is_null():检查值是否为null(该值不一定是变量)
    //> 如果变量不存在,使用is_null判断:
    var_dump( is_null( $asc ) ); //> 抛出Notice警告,返回true
    
    • isset():也可以检查数组元素是否存在。
    $arr = ['xs'=>'xs','nu'=>null];
    var_dump( isset($arr['xs']) );  //> true
    var_dump( isset($arr['nu']) );  //> false
    
    • 这是由于数组元素就是一个可变的类型。
    • (php>=5.4)检查字符的非数字偏移量会返回 false
    $expected_array_got_string  =  'somestring' ; 
    var_dump (isset( $expected_array_got_string [ 'some_key' ])); //> false
    var_dump (isset( $expected_array_got_string [ 0 ]));  //> true
    var_dump (isset( $expected_array_got_string [ '0' ]));  //> true
    var_dump (isset( $expected_array_got_string [ 0.5 ]));  //> true
    var_dump (isset( $expected_array_got_string [ '0.5' ])); //> false
    var_dump (isset( $expected_array_got_string [ '0 Mostel' ])); //> false
    
    • defined():检查某个常量是否存在。
    bool defined (string $name) //> php函数语法(注意:参数需要的是字符串)
    
    • 检查该名称的常量是否已经被定义。
    <?php
    //> php的常量支持普通常量和魔术常量
    var_dump( defined( 'APP' ) ); //> false
    define('APP','application');
    var_dump( defined( 'APP' ) ); //> true
    //> defined():对魔术常量无效
    var_dump( defined(__LINE__) );  //> false
    var_dump( defined(__DIR__) );   //> false
    ?>
    
    • defined():只对普通常量有效,对魔术常量无效(一直返回false)
    • 常量的定义:define()函数。或使用const关键字。(后面详解)
    • constant():返回一个常量的值。
      • 用在,不知道常量的名字,但常量名在某个变量里时。
    mixed constant( string $name ) //> php函数语法
    
      * 返回值:正常--返回常量的值;如果变量未定义返回 **NULL** 或抛出异常(E_WARING)
    

    • define():定义一个常量。
    bool define(string $name, mixed $value [,bool $case_insensitive = false])
    
    • $name:表示常量名称,一般使用大写字母。
    • $value:表示常量的值。
    • $case_insensitive:默认false --- 大小写敏感;true --- 大些写不敏感。
    define('PI', 3.1435926);
    echo PI;  //> 默认false,大小写敏感
    define('TWO_PI',3.1415926, true);
    echo two_pi; //> true:大小写不敏感。
    
    • define()函数通常和defined()函数一起使用。
    //> 如果PI常量不存在时,就定义常量PI。
    defined('PI') or define('PI',3.14159265);  
    

    • array_merge():合并指定的数组(只能合并最外面一层数组
    array array_merge( array $arr1 [,array $...] )
    
    • PHP5中要求,参数必须是数组。
    • 把后面的参数和第一个参数合并起来。
    • 如果后面的索引和前面的重复,就替换前面的值。
    • 如果后面的键位数值,重新排序和前面的整合。
    $arr1 = ['php'=>'PHP','c'=>'C','i want'];
    // var_dump(array_merge($arr1,'me')); //> 提示第二个参数需要数组
    //> 使用强制类型转换成数组的形式。
    var_dump(array_merge($arr1,array('me')));
    //> 相同键,后面覆盖前面
    $arr2 = ['php'=>'Python',' you'];
    var_dump( array_merge($arr1, $arr2) );
    

    运行结果:

    //> 相同数字的键值,拼接是要重新整合。
    array(4) { 
      ["php"]=> string(3) "PHP" 
      ["c"]=> string(1) "C" 
      [0]=> string(6) "i want" 
      [1]=> string(2) "me" 
    }
    //> 后面的python覆盖了前面的php字符串。
    array(4) { 
      ["php"]=> string(6) "Python" 
      ["c"]=> string(1) "C" 
      [0]=> string(6) "i want" 
      [1]=> string(4) " you" 
    }
    
    • array_merge_recursive():递归合并一个或多个数组。(相同键,不和覆盖是合并)
    array array_merge_recursive(array $arr1 [, array $...])
    
    • 将一个或多个数组单元合并起来,值附加在前面一个的后面。(相同键进行合并,成数组。不是覆盖
    $ar1  = array( "color"  => array( "favorite"  =>  "red" ),  5 );
    $ar2  = array( 10 ,  "color"  => array( "favorite"  =>  "green" ,  "blue" ), 5 );
    $result  =  array_merge_recursive ( $ar1 ,  $ar2 );
    print_r ( $result );
    

    运行结果:

    //> 相同值或键进行合并成数组。
    Array
    (
        [color] => Array
            (
                [favorite] => Array
                    (
                        [0] => red
                        [1] => green
                    )
                [0] => blue
            )
        [0] => 5
        [1] => 10
        [2] => 5
    )
    

    • in_array():检查数组中是否存在某个值
    bool in_array( mixed $needle,array $haystack [,bool $atrict = false])
    
    • 在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。 (比较的是值,和键没有什么关系
    • $needle:如果是字符串,比较区分大小写。
    • $haystack:需要检查的数组。
    • $atrict:默认false,不检查数据类型;true,需要检查数据类型是否一致
    //> in_array():函数和键无关,比较的是值
    $arr = ['php'=>'PHP','C',520];
    //> 字符串比较是要区分大小写的
    var_dump( in_array('PHP', $arr) );  //> true
    var_dump( in_array('php', $arr) );  //> false
    //> in_array第三个参数严格判断数据类型
    var_dump( in_array('520', $arr) ); //> true
    var_dump( in_array('520', $arr, true) ); //> false
    
    • in_array():在判断时,判断的是一维数组。
    $a  = [['p' ,'h'] ,['p' ,'r' ] ,'o' ];
    if ( in_array (['p' ,'h'] ,$a )) {    
          echo  "'ph' was found\n" ;
    }
    if ( in_array ( ['f' ,'i'] ,$a )) {    
          echo  "'fi' was found\n" ;
    }
    if ( in_array ( 'o' ,  $a )) {
          echo  "'o' was found\n" ;
    }
    

    运行结果:

    //> 如果把二维数组当作一维数组,in_array也是能判断的(也是判断的是值,其他维同理)
    'ph' was found
    'o' was found
    

    • realpath(string $str):

    [===================]

    Ctyoe 函数

    相关文章

      网友评论

        本文标题:PHP函数

        本文链接:https://www.haomeiwen.com/subject/dmrwuttx.html