导航

php常用函数

Posted on 2017-03-23 16:02  deeply_desire  阅读(294)  评论(0编辑  收藏  举报

PHP数据类型包括8种

 
相对应的判断函数有:
is_bool(),is_int(),is_integer(),is_long()(同样是判断整型),is_real()(同样是判断浮点型),is_float(),is_string(),is_array(),is_object(),is_null()用来检测变量是否为 NULL
 
其他常用函数

array_values() 函数可以返回数组中所有的值并给其建立数字索引

复制代码
<?php
$arr = [0,1,2,3];
unset($arr[1]);
$arr = array_values($arr);
/*
array (size=3)
  0 => int 0
  1 => int 2
  2 => int 3
 */
var_dump($arr);
?>
复制代码

list()函数可以将数组中的值赋给变量

复制代码
list($a,$b,$c) = [1,2,3];
echo $a;//1
echo $b;//2
echo $c;//3

// 仅接收其中一个
list(, , $power) = [1,2,3];
echo $power;//3

// list() 不能对字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
复制代码

回调函数是指将一个函数的函数名作为参数传到另一个函数中

复制代码
function demo($num,$n){
    for($i=0;$i<$num;$i++){
        if($n($i)){
            echo $i.'<br>';
        }
    }
}

function test($i){
    if($i%5){
        return true;
    }
}

demo(20,'test');

 

 

递归函数

复制代码
<?php
    function test( $n ) {            
        echo $n; 
        if($n>0){
            test($n-1);                   
        }   
        echo $n; 
    }
    test(5);//543210012345
?>

 

 

 

键值操作

array_values:array_values() 返回 input 数组中所有的值并给其建立数字索引(文档上面有介绍)

array_keys:array_keys() 返回 input 数组中的数字或者字符串的键名

array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] )

如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回

如果指定了可选参数 strict,表示判断在搜索的时候是否该使用严格的比较(===)

复制代码
<?php
$array = array(0 => 100, "color" => "red");
//Array ( [0] => 0 [1] => color ) 
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");
// Array ( [0] => 0 [1] => 3 [2] => 4 ) 
print_r(array_keys($array, "blue"));

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
Array ( [0] => color [1] => size )
print_r(array_keys($array));
?>
复制代码

in_array:in_array — 检查数组中是否存在某个值

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同

复制代码
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    //Got Irix
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>
复制代码

array_flip:array_flip — 交换数组中的键和值,成功时返回交换后的数组,如果失败返回 NULL

array array_flip ( array $trans )

array_flip() 返回一个反转后的 array,例如 trans 中的键名变成了值,而 trans 中的值成了键名

如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了

[注意]trans中的值需要能够作为合法的键名,例如需要是 integer 或者 string。如果值的类型不对将发出一个警告,并且有问题的键/值对将不会反转

复制代码
<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
//Array ( [1] => b [2] => c )
print_r($trans);
?>
复制代码

array_reverse:array_reverse — 返回一个单元顺序相反的数组

array array_reverse ( array $array [, bool $preserve_keys = false ] )

如果参数preserve_keys设置为 TRUE 会保留数字的键。非数字的键则不受这个设置的影响,总是会被保留

array_count_values:array_count_values — 统计数组中所有的值出现的次数

array array_count_values ( array $input )
<?php
$array = array(1, "hello", 1, "world", "hello");
//Array ( [1] => 2 [hello] => 2 [world] => 1 )
print_r(array_count_values($array));
?>

array_unique:array_unique — 移除数组中重复的值

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

[注意]键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留

复制代码
<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
//Array ( [a] => green [0] => red [1] => blue )
print_r($result);
?>
复制代码

array_sum:array_sum — 计算数组中所有值的和,array_sum() 将数组中的所有值的和以整数或浮点数的结果返回

复制代码
<?php
$a = array(2, 4, 6, 8);
//sum(a) = 20
echo "sum(a) = " . array_sum($a) . "\n";
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
//sum(b) = 6.9
echo "sum(b) = " . array_sum($b) . "\n";
?>
复制代码

array_merge:array_merge — 合并一个或多个数组

array_intersect:array_intersect — 计算数组的交集

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

 array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值

 [注意]键名保留不变

复制代码
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
//Array ( [a] => green [0] => red )
print_r($result);
?>
复制代码

array_diff:array_diff — 计算数组的差集

array array_diff ( array $array1 , array $array2 [, array $... ] )

对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值

复制代码
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
//Array ( [1] => blue )
print_r($result);
?>
复制代码

array_fill:array_fill — 用给定的值填充数组,返回填充后的数组

array array_fill ( int $start_index , int $num , mixed $value )

 array_fill() 用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始

复制代码
?php
$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear');
//Array ( [5] => banana [6] => banana [7] => banana [8] => banana [9] => banana [10] => banana )
print_r($a);
//Array ( [-2] => pear [0] => pear [1] => pear [2] => pear )
print_r($b);
?>

 

 

栈和队列

array_pop:array_pop — 将数组最后一个单元弹出(出栈)

mixed array_pop ( array &$array )

array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL

复制代码
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
//Array ( [0] => orange [1] => banana [2] => apple )
print_r($stack);
?>
复制代码

array_push:array_push — 将一个或多个单元压入数组的末尾(入栈),返回处理之后数组的元素个数

int array_push ( array &$array , mixed $var [, mixed $... ] )

array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加

复制代码
<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
//Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )
print_r($stack);
?>
复制代码

array_shift:array_shift — 将数组开头的单元移出数组

mixed array_shift ( array &$array )

array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变

复制代码
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
//Array ( [0] => banana [1] => apple [2] => raspberry )
print_r($stack);
?>
复制代码

array_unshift:array_unshift — 在数组开头插入一个或多个单元,返回 array 数组新的单元数目

int array_unshift ( array &$array , mixed $var [, mixed $... ] )

  array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保     持不变

复制代码
<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
//Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana )
print_r($queue);
?>

 

 

trim():该函数用于返回去掉字符串首尾空格的字符串

ltrim():ltrim函数用于删除字符串开头的空白字符(或其他字符)

rtrim():rtrim函数用于删除字符串末端的空白字符(或者其他字符)

strtolower():strtolower — 将字符串转化为小写

strtoupper():strtoupper — 将字符串转化为大写

ucfirst():ucfirst — 将字符串的首字母转换为大写

ucwords():ucwords — 将字符串中每个单词的首字母转换为大写

htmlspecialchars():把指定特殊符号转换成实体

addslashes():使用反斜线引用字符串,返回字符串

stripslashes(): 反引用一个引用字符串

strrev():strrev — 反转字符串

string strrev ( string $string )
<?php
echo strrev("Hello world!"); // 输出 "!dlrow olleH"
?>

strlen():strlen — 获取字符串长度

md5():计算字符串的 MD5 散列值

strstr():查找字符串的首次出现,返回haystack字符串从needle第一次出现的位置开始到haystack结尾的字符串

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

before_needle若为TRUE,strstr()将返回needle在haystack中的位置之前的部分

复制代码
<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // @example.com

$user = strstr($email, '@', true); 
echo $user; //name
?>
复制代码

strpos():strpos()查找字符串首次出现的位置

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
<?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>

strrpos():strrpos()计算指定字符串在目标字符串中最后一次出现的位置

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
复制代码
<?php
$foo = "0123456789a123456789b123456789c";

var_dump(strrpos($foo, '7', -5));  // 从尾部第 5 个位置开始查找
                                   // 结果: int(17)

var_dump(strrpos($foo, '7', 20));  // 从第 20 个位置开始查找
                                   // 结果: int(27)

var_dump(strrpos($foo, '7', 28));  // 结果: bool(false)
?>

 

 

substr():substr()返回字符串的子串

string substr ( string $string , int $start [, int $length ] )
复制代码
<?php
$rest = substr("abcdef", -1);    // 返回 "f"
$rest = substr("abcdef", -2);    // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"
?>

<?php
$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", 4, -4);  // 返回 ""
$rest = substr("abcdef", -3, -1); // 返回 "de"
?>
复制代码

str_replace():str_replace()返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

 如果count被指定,它的值将被设置为替换发生的次数

复制代码
<?php
// 赋值: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// 赋值: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

// 赋值: You should eat pizza, beer, and ice cream every day
$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);

// 赋值: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>
复制代码

分割:explode()

explode()使用一个字符串分割另一个字符串,返回由字符串组成的数组,每个元素都是string的一个子串,它们被字符串delimiter作为边界点分割出来

array explode ( string $delimiter , string $string [, int $limit ] )

如果设置了limit参数并且是正数,则返回的数组包含最多limit个元素,而最后那个元素将包含string的剩余部分;如果limit参数是负数,则返回除了最后的-limit个元素外的所有元素;如果limit是0,则会被当做1

复制代码
<?php
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>
复制代码

implode():implode()将一个一维数组的值转化为字符串

string implode ( string $glue , array $pieces )
string implode ( array $pieces )
复制代码
<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// Empty string when using an empty array:
var_dump(implode('hello', array())); // string(0) ""

?>