1.運算元組的函式
range(起始值,結束值)
生在一個指定範圍的地址
$array1 = range(10,20); //生成一個10-20的陣列
print_r($array1);
//Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 13 [4] => 14 [5] => 15 [6] => 16 [7] => 17 [8] => 18 [9] => 19 [10] => 20 )
echo '<br>';
$array2 = range('a','f'); //生成一個a-f的陣列
print_r($array2);
//Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
echo '<br>';
$array3 = range('F','A'); //生成一個F-A的陣列
print_r($array3);
//Array ( [0] => F [1] => E [2] => D [3] => C [4] => B [5] => A )
複製程式碼
array_rand(陣列,隨機取出元素的個數)
- 隨機取出陣列內元素,返回隨機陣列的下標
- 如果隨機取出1個,返回整型下標
- 如果隨機取出多個,返回整型下標陣列
$array1 = range(10,20);
print_r(array_rand($array1,1)); //隨機輸出陣列中的1位 3
echo '<br>';
print_r(array_rand($array1,4)); //隨機輸出陣列中的4位 Array ( [0] => 1 [1] => 6 [2] => 7 [3] => 8 )
echo '<br>';
複製程式碼
shuffle(陣列)
打亂陣列(打亂成功返回true,打亂失敗返回false)
$array1 = range(10,20);
print_r($array1);
echo '<br>';
shuffle($array1); //打亂陣列
print_r($array1);
echo '<br>';
print_r($array1);
echo '<br>';
// Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 13 [4] => 14 [5] => 15 [6] => 16 [7] => 17 [8] => 18 [9] => 19 [10] => 20 )
// Array ( [0] => 14 [1] => 16 [2] => 11 [3] => 10 [4] => 20 [5] => 19 [6] => 12 [7] => 13 [8] => 15 [9] => 17 [10] => 18 )
// Array ( [0] => 14 [1] => 16 [2] => 11 [3] => 10 [4] => 20 [5] => 19 [6] => 12 [7] => 13 [8] => 15 [9] => 17 [10] => 18 )
複製程式碼
is_array()
判斷變數是否是陣列型別
$array1 = range(10,20);
if(is_array($array1)){
echo '是陣列';
}else{
echo '不是陣列';
}
複製程式碼
array_search()
在陣列中搜尋給定的值,如果成功則返回相應的鍵名,如果找不到返回false
$array = range(10,20);
echo array_search(15,$array),'<br>'; //5
var_dump(array_search(30,$array)); //bool(false)
複製程式碼
2.運算元組鍵值函式
array_keys()和array_values()
- array_keys($array):返回陣列中的所有鍵名
- array_values($array):返回陣列中的所有值
$array = range('A','F');
$key = array_keys($array);
$value = array_values($array);
print_r($key); echo '<br>';
print_r($value); echo '<br>';
// Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
// Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F )
複製程式碼
array_combine(鍵陣列,值陣列)
建立一個陣列,用鍵陣列的值做鍵名,值陣列的值做值
$key = array('name','sex','age');
$value = array('李白','男','18');
$array = array_combine($key,$value);
print_r($array); echo '<br>';
//Array ( [name] => 李白 [sex] => 男 [age] => 18 )
複製程式碼
如果鍵陣列和值陣列的元素個數不一樣,返回false
in_array(查詢的值,陣列)
作用:檢查陣列中是否包含某個值,返回bool型別
$array = array('name' => '李白', 'sex' => '男', 'age' => '18');
var_dump(in_array('18',$array)); echo '<br>'; //bool(true)
複製程式碼
查詢陣列的值:區分大小寫,不區分資料型別
array_key_exists(鍵,陣列)
檢查鍵名或索引是否在陣列中
$array = array('name' => '李白', 'sex' => '男', 'age' => '18');
var_dump(array_key_exists('sex',$array)); echo '<br>'; //bool(true)
var_dump(array_key_exists('sexs',$array)); echo '<br>'; //bool(false)
複製程式碼
isset(變數名)
檢測變數是否設定,並且設定的值不為null
//array_key_exists()和isset()的區別
$array = array('name' => '李白', 'sex' => '男', 'age' => '18', 'add' => NULL);
var_dump(array_key_exists('name',$array),isset($array['name'])); echo '<br>'; //bool(true) bool(true)
var_dump(array_key_exists('add',$array),isset($array['add'])); echo '<br>'; //bool(true) bool(false)
複製程式碼
3.陣列連線和字串分割函式
將陣列的值連線成字串:implode()
別名是join(),將陣列的值連線成字串
$array1 = array('李白','男','18',NULL);
$array2 = implode('-',$array1); //將陣列的值連線成字串
echo $array2,'<br>'; //李白-男-18-
複製程式碼
將字串分割成陣列: explode()
$array2 = '李白-男-18-';
$array3 = explode('-',$array2);
print_r($array3); echo '<br>'; //Array ( [0] => 李白 [1] => 男 [2] => 18 [3] => )
複製程式碼
4.陣列運算函式
陣列合並: array_merge()
$array1 = array_merge(range('a','f'),range('A','F'),range(0,9));
print_r($array1);
//Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f [6] => A [7] => B [8] => C [9] => D [10] => E [11] => F [12] => 0 [13] => 1 [14] => 2 [15] => 3 [16] => 4 [17] => 5 [18] => 6 [19] => 7 [20] => 8 [21] => 9 )
複製程式碼
陣列合並時候下標衝突,按如下規則解決:
- 如果是字串下標,後面的元素將前面的元素覆蓋
- 如果在整數下標,重新建立下標索引
$array1 = array('name'=>'李白','sex'=>'男','age'=>'18','ctiy'=>'廣州',0=>'lb');
$array2 = array('name'=>'杜甫','sex'=>'女','age'=>'28',0=>'dp');
$array3 = array_merge($array1,$array2);
print_r($array3);
//Array ( [name] => 杜甫 [sex] => 女 [age] => 28 [ctiy] => 廣州 [0] => lb [1] => dp )
echo '<br>';
複製程式碼
資料的差集:array_diff(陣列1,陣列2,陣列3,…)
$array1 = range(10,20);
$array2 = range(0,12);
$array3 = range(18,30);
print_r(array_diff($array1,$array2)); echo '<br>';
//Array ( [3] => 13 [4] => 14 [5] => 15 [6] => 16 [7] => 17 [8] => 18 [9] => 19 [10] => 20 )
print_r(array_diff($array1,$array2,$array3)); echo '<br>';
//Array ( [3] => 13 [4] => 14 [5] => 15 [6] => 16 [7] => 17 )
//下標不會孌,和下標沒關係
複製程式碼
陣列相交:array_intersect(陣列1,陣列2,陣列3,…) 陣列的交集結果中,下標使用的是第一個陣列的下標。 取兩個陣列中一樣的
$array1 = range(10,20);
$array2 = range(0,12);
$array3 = range(18,30);
print_r(array_intersect($array1,$array2)); echo '<br>';
//Array ( [0] => 10 [1] => 11 [2] => 12 )
print_r(array_intersect($array1,$array3)); echo '<br>';
//Array ( [8] => 18 [9] => 19 [10] => 20 )
複製程式碼
5.使用回撥函式的函式
回撥函式:計算機自己呼叫的函式,不需要手動呼叫。
array_map('函式名','陣列')
呼叫PHP自身的函式
$array1 = array(10,-20,-30,52);
$new_array1 = array_map('abs',$array1); //aba中PHP中自身的函式(絕對值)
print_r($new_array1); echo '<br>';
//Array ( [0] => 10 [1] => 20 [2] => 30 [3] => 52 )
複製程式碼
呼叫自定義函式
function fun($name){
return '你好'.$name;
}
$array = array('呵呵','哈哈');
$new_array = array_map('fun',$array);
print_r($new_array); echo '<br>';
//Array ( [0] => 你好呵呵 [1] => 你好哈哈 )
複製程式碼
$array = array('呵呵','哈哈');
$new_array = array_map(function ($name){
return '你好'.$name;
},$array);
print_r($new_array); echo '<br>';
//Array ( [0] => 你好呵呵 [1] => 你好哈哈 )
複製程式碼
array_map()支援一次處理多個陣列,將所有陣列中同位置的元素作為引數傳遞給回撥函式
$php = array('68','54','78','62');
$MySQL = array('45','87','98','36');
function fun($php,$MySQL){
return $php+$MySQL;
}
$new_array = array_map('fun',$php,$MySQL);
print_r($new_array); echo '<br>';
//Array ( [0] => 113 [1] => 141 [2] => 176 [3] => 98 )
複製程式碼
array_map()預設可以將多個陣列的同位置的元素組成新陣列
//null表示預設操作
$php = array('68','54','78','62');
$MySQL = array('45','87','98','36');
function fun($php,$MySQL){
return $php+$MySQL;
}
$new_array = array_map(null,$php,$MySQL);
print_r($new_array); echo '<br>';
//Array ( [0] => Array ( [0] => 68 [1] => 45 ) [1] => Array ( [0] => 54 [1] => 87 ) [2] => Array ( [0] => 78 [1] => 98 ) [3] => Array ( [0] => 62 [1] => 36 ) )
複製程式碼
++array_map()只能處理值,不能處理鍵++
array_walk(陣列,回撥函式)
作用:對陣列中的每個元素的鍵值進行對調處理,類似於foreach迴圈
- 如果回撥函式是一個引數,則這個引數是值
- 如果呼叫函式是兩個引數,第一個是值,第二個是鍵
$array = array('name'=>'李白','sex'=>'男','age'=>'18','ctiy'=>'廣州',0=>'lb');
function funs($value,$key){
echo $key,'-',$value,'<br>';
}
function fun($key){
echo $key,'<br>';
}
array_walk($array,'fun');
echo '<br><br>';
array_walk($array,'funs');
// 李白
// 男
// 18
// 廣州
// lb
// name-李白
// sex-男
// age-18
// ctiy-廣州
// 0-lb
複製程式碼
6.棧和佇列
- 棧和佇列都屬於資料結構
- 棧是先進後出
- 佇列是先進先出
實現棧效果的函式
- array_push(陣列,入[棧|佇列]的值) //類似追加
- array_pop():出棧,將最尾部的元素彈出 //刪除最後一個
$array = array();
array_push($array,'李白'); //入棧
array_push($array,'杜甫','白居易'); //入棧
print_r($array); echo '<br>'; //Array ( [0] => 李白 [1] => 杜甫 [2] => 白居易 )
array_pop($array); //出棧
print_r($array); echo '<br>'; //Array ( [0] => 李白 [1] => 杜甫 )
複製程式碼
++array_push()和array_pop()作用在於維護一個連續的儲存空間;為新增加的元素重寫下標(索引)++
實現佇列效果的函式
- array_shift():出佇列,將佇列中的第一個元素移除 //刪除頭
- array_unshift():在陣列的開頭插入一個元素 //頭插入
$array = array();
array_unshift($array,'李白'); //堆疊
array_unshift($array,'杜甫','白居易'); //堆疊
print_r($array); echo '<br>'; //Array ( [0] => 杜甫 [1] => 白居易 [2] => 李白 )
array_shift($array); //出棧
print_r($array); echo '<br>'; //Array ( [0] => 白居易 [1] => 李白 )
複製程式碼
7.陣列排序函式
sort() :按值進行升序排列,不保持原來的鍵值關聯
$list = array('a'=>10,'c'=>5,'b'=>12);
sort($list);
print_r($list); echo '<br>';
//Array ( [0] => 5 [1] => 10 [2] => 12 )
複製程式碼
rsort():按值進行降序排列,不保持原來的鍵值關聯
$list = array('a'=>10,'c'=>5,'b'=>12);
rsort($list);
print_r($list); echo '<br>';
//Array ( [0] => 12 [1] => 10 [2] => 5 )
複製程式碼
asort():按值進行升序排列,保持原來的鍵值關聯
$list = array('a'=>10,'c'=>5,'b'=>12);
asort($list);
print_r($list); echo '<br>';
//Array ( [c] => 5 [a] => 10 [b] => 12 )
複製程式碼
arsort():按值進行降序排列,保持原來的鍵值關聯
$list = array('a'=>10,'c'=>5,'b'=>12);
arsort($list);
print_r($list); echo '<br>';
//Array ( [b] => 12 [a] => 10 [c] => 5 )
複製程式碼
ksort():按鍵進行升序排列
$list = array('a'=>10,'c'=>5,'b'=>12);
ksort($list);
print_r($list); echo '<br>';
//Array ( [a] => 10 [b] => 12 [c] => 5 )
複製程式碼
krsort():按鍵進行降序排列
$list = array('a'=>10,'c'=>5,'b'=>12);
krsort($list);
print_r($list); echo '<br>';
//Array ( [c] => 5 [b] => 12 [a] => 10 )
複製程式碼
natsort():自然排序
$list = array('stu_3','stu_1','stu_15','stu_10','stu_260');
sort($list);
print_r($list); echo '<br>';
//按每一位數字分開比較排序
//Array ( [0] => stu_1 [1] => stu_10 [2] => stu_15 [3] => stu_260 [4] => stu_3 )
natsort($list);
print_r($list); echo '<br>';
//按整體數字比較排序
//Array ( [0] => stu_1 [4] => stu_3 [1] => stu_10 [2] => stu_15 [3] => stu_260 )
複製程式碼
usort():使用者自定義排序
$stu = array(
array('name'=>'李白','age'=>22,'score'=>65),
array('name'=>'杜甫','age'=>12,'score'=>77),
array('name'=>'白居易','age'=>8,'score'=>87),
array('name'=>'王安石','age'=>32,'score'=>20),
);
function fun($stu1,$stu2){
if($stu1['age']<$stu2['age'])
return -1;
elseif ($stu1['age']>$stu2['age'])
return 1;
else
return 0;
}
usort($stu,'fun');
echo '<pre>';
print_r($stu);
// Array
// (
// [0] => Array
// (
// [name] => 白居易
// [age] => 8
// [score] => 87
// )
// [1] => Array
// (
// [name] => 杜甫
// [age] => 12
// [score] => 77
// )
// [2] => Array
// (
// [name] => 李白
// [age] => 22
// [score] => 65
// )
// [3] => Array
// (
// [name] => 王安石
// [age] => 32
// [score] => 20
// )
// )
複製程式碼
8.字串操作函式
[] 字串可以理解成字元的集合,所以可以通過[]來訪問。不能操作中文
$stu = 'abcdefg';
echo $stu[0],'<br>'; //a
$stu[2] = 'C';
echo $stu,'<br>'; //abCdefg
複製程式碼
strlen() 返回字串長度,以位元組為單位
$stu = 'abcdefg';
echo strlen($stu),'<br>'; //7
$str = '中文';
echo strlen($str),'<br>'; //6
//在gbk下一個漢字2個位元組,在utf8下一個漢字3個位元組。
複製程式碼
trim()、ltrim()、rtrim():去空白字元
- trim():去字串兩邊的把空格
- ltrim():去字串左邊的空格
- rtrim():去字串右邊的空格
strpos()
- strpos():查詢字串首次出現的位置
- strrpos():查詢字串最後一次出現的位置
$stu = 'abcdefga';
echo strpos($stu,'a'),'<br>'; //0
echo strrpos($stu,'a'),'<br>'; //7
複製程式碼
str_repeat():重複字串
$word = 'hello!';
echo str_repeat($word,3),'<br>'; //hello!hello!hello!
複製程式碼
chr()、ord()
$num = ord('A'); //獲取字元的Asc||碼
echo $num,'<br>'; //65
echo chr($num),'<br>'; //將ASC||轉成字元 A
複製程式碼
substr(字串,開始位置,擷取長度):擷取字串
$num = 'abcdef';
echo substr($num,1,3),'<br>'; //bck
echo substr($num,-3,2),'<br>'; //de
echo substr($num,-1,2),'<br>'; //f
//長度省略就擷取到結尾
echo substr($num,1),'<br>'; //bcdef
echo substr($num,-4),'<br>'; //cdef
//長度為負表示後面有幾個字元不擷取
echo substr($num,1,-1),'<br>'; //bcde
echo substr($num,-4,-2),'<br>'; //cd
複製程式碼
strchr()、strrchr()
$num = 'abcdebf';
echo strchr($num,'b'),'<br>'; //bcdebf //從哪個字元開始往後擷取
echo strrchr($num,'b'),'<br>'; //bf //從哪個字元最後一個開始往後擷取
複製程式碼
str_replace():替換字串
$num = '明日復明日,明日何其多';
echo str_replace('明日','今日',$num),'<br>'; //所有明日替換成今日:今日復今日,今日何其多
$array1 = array('明日','復','何其');
$array2 = array('一天','又','非常');
echo str_replace($array1,$array2,$num),'<br>';//一天又一天,一天非常多
複製程式碼
str_split():將字串分割成陣列
$str = 'abcdef';
print_r(str_split($str)); echo '<br>';
//Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
print_r(str_split($str,2)); echo '<br>';
//Array ( [0] => ab [1] => cd [2] => ef )
複製程式碼
str_pad(待填充字串,總位數,填充字元,填充位置) 填充字串
$stuid = 12;
echo str_pad($stuid,4,'0'),'<br>'; //1200
echo str_pad($stuid,4,'0',STR_PAD_LEFT),'<br>'; //0012 在左邊加
echo str_pad($stuid,4,'0',STR_PAD_BOTH),'<br>'; //0120 在兩邊加
複製程式碼
字串大小寫轉換
echo strtolower('I AM A BOY'),'<br>'; //轉換成小寫
echo strtoupper('i am a boy'),'<br>'; //轉換成小寫
複製程式碼
nl2br():將字串的換行轉成
nl2br() //常用於文字域換行
複製程式碼
htmlspecialchars():將HTML字型轉成實體
echo htmlspecialchars('<p>呵呵</p>'),'<br>'; //<p>呵呵</p>
複製程式碼
urlencode()、urldecode():url編碼和解碼
echo urlencode('明日復明日,明日何其多'),'<br>';//%E6%98%8E%E6%97%A5%E5%A4%8D%E6%98%8E%E6%97%A5%EF%BC%8C%E6%98%8E%E6%97%A5%E4%BD%95%E5%85%B6%E5%A4%9A
echo urldecode('%E6%98%8E%E6%97%A5%E5%A4%8D%E6%98%8E%E6%97%A5%EF%BC%8C%E6%98%8E%E6%97%A5%E4%BD%95%E5%85%B6%E5%A4%9A'),'<br>'; //明日復明日,明日何其多
複製程式碼
9.多位元組字串處理函式
PHP預設本身不支援多位元組處理。要開啟mb_擴充套件(multibytes). ==開啟extension=php_mbstring.dll==
mb_strlen():獲取字串的長度
$str = '明日何其多';
echo mb_strlen($str),'<br>'; //15
echo mb_strlen($str,'utf-8'),'<br>'; //5
複製程式碼
mb_internal_encoding():設定/獲取內部字元編碼
$str = '明日何其多';
echo mb_internal_encoding(),'<br>'; //ISO-8859-1
echo mb_strlen($str),'<br>'; //15
echo mb_strlen($str,'utf-8'),'<br>'; //5
mb_internal_encoding('utf-8'); //設定PHP編碼為utf-8
echo mb_internal_encoding(),'<br>'; //utf-8
echo mb_strlen($str),'<br>'; //5
複製程式碼
mb_strpos():查詢字串在另一個字串中的位置
$str = '明日何其多';
echo mb_strpos($str,'何'),'<br>';//6
mb_internal_encoding('utf-8'); //設定PHP編碼為utf-8
echo mb_strpos($str,'何'),'<br>';//2
echo strpos($str,'何'),'<br>';//6
複製程式碼
mb_substr():獲取子字串
<?php
$str = '明日何其多';
mb_internal_encoding('utf-8'); //設定PHP編碼為utf-8
echo substr($str,1,2),'<br>';//亂碼
echo mb_substr($str,1,2),'<br>';//日何
?>
複製程式碼
10.字串編碼
iconv(輸入的編碼,輸出編碼,字串)
$str = '明日何其多';
echo strlen($str),'<br>';//15
$str_gbk = iconv('utf-8','gbk',$str); //將字串轉成gbk格式
echo strlen($str_gbk),'<br>';//10
複製程式碼