PHP函数

Array常用函数:

  • array_diff( , [,...] ):计算数组的差集。
    • 返回在 中但是不在 及任何其它参数数组(,...)中的值。
    • array_diff():函数,比较的是,与键无关。(字符串时区分大小写的)
    • array_diff():函数,返回的键是在中的键。
    • array_diff():函数,比较的是一维数组。(就是最外面的)
'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():返回的键,是在中元素对应的键。(如:[0]=>"Js",[2]=>"Node.js"都和$arr1中一致)
4.array_diff():需要参数类型是数组(Array)。(字符串类型或其他的都不得行,结果返回NULL

  • array_diff_assoc( , [,...] ):计算数组的差集。
    • 与array_diff():函数的区别在于,这次比较的是键和值都必须一致。
    • 其他特点,和array_diff()函数一致。
['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.从(和的C++)中,可以看到array_diff_assoc()函数比较的时键。(要求时键和值都一致,才认为匹对成功)


  • isset():检查变量是否存在:
bool isset(mixed $var [,mixed $...])  //> php函数语法
  • 可以同时检查多个变量是否存在。(and关系)
  • 该函数只能检测变量
  • 如果var不存在或者为NULL,返回 false;如果var存在,返回 true
 变量不存在或值为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
?>
  • 和 等是有区别的。
  • isset()无法区别变量是存在还是为NULL值。(我们可以使用 === 区分或使用 is_null(mixed $var)
# isset判断变量是否存在 但是变量值为null时 返回值false
$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' ; 
# $expected_array_got_string['some_key'] 偏移量之外
var_dump (isset( $expected_array_got_string [ 'some_key' ])); //> false
# $expected_array_got_string [0] = s
var_dump (isset( $expected_array_got_string [ 0 ]));  //> true
# $expected_array_got_string ['0'] = s
var_dump (isset( $expected_array_got_string [ '0' ]));  //> true
# $expected_array_got_string [0.5] = $expected_array_got_string [0] = s
var_dump (isset( $expected_array_got_string [ 0.5 ]));  //> true
# $expected_array_got_string[ '0.5'] = s 偏移量之外
var_dump (isset( $expected_array_got_string [ '0.5' ])); //> false
# $expected_array_got_string [ '0 Mostel' ] = s
var_dump (isset( $expected_array_got_string [ '0 Mostel' ])); //> false
  • defined():检查某个常量是否存在。
bool defined (string $name) //> 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):
PHP函数_第1张图片

PHP函数_第2张图片

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

Ctype 函数
PHP函数_第3张图片
get_included_files
# 返回被 include 和 require 文件名的 array
# 返回被 include、include_once、require、require_once加载的文件
array get_included_files(void)
is_a
# 如果对象属于该类或该类是此对象的父类则返回 TRUE
bool is_a( object $object, string $class_name [, bool $allow_string = false] )
# 如果$object是$class_name类 | $class_name是$object的父类 返回true
# allow_string 如果此参数设置为FALSE,则不允许将字符串类名称作为对象。 如果该类不存在,这也可以防止调用自动加载器。
get_class
# 返回对象的类名
get_class( [ object $obj ] )
# 返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE
is_subclass_of
# 如果$object是$class_name的子类,则返回true,否则返回false
is_subclass_of( object $object, string $class_name )
preg_quote
# 转义正则表达式字符
# 在pattern字符串的每一个#符号前添加 反斜杠 (\#)
$pattern = preg_quote($pattern, '#');

你可能感兴趣的:(PHP函数)