搜索
您的当前位置:首页正文

PHP函数

来源:二三娱乐

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 函数
Top