好幾天沒有發文章了,陪我女友出去旅游回來后迷上了幾天小說,加上平時又得工作,趁著手上工作忙完,繼續為大家整理PHP知識,今天為大家分析的點是數組。
定義數組的幾種方式
注:此處涉及到什么叫索引數組,什么叫關聯數組,說白了就是看有沒有=>這個符號,如果有,說明它們是成對存在的,是鍵值對,這就是關聯數組,如果沒有,那么第一個元素的鍵對應的索引實際是0,所以叫索引數組。
eg1:定義個索引數組
$array = array('hello', 'world', 'nihao', 'shijie');
eg2:定義一個關聯數組
$array = array('hello' => 'world', 'nihao' => 'shijie');
eg3:定義一個空數組
$array = array();
eg4:PHP5.4以上定義數組的簡單方式
$array = [];
eg5: 以追加元素的方式定義數組
$array['hello'] = 'world';
$array['nihao'] = 'shijie';
如何打印數組
一般我們使用echo來輸出字符串,不能用它來輸出數組,那么我們輸入打印數組呢?
eg1:var_dump(array)
$array = array('hello', 'world', 'nihao', 'shijie');
var_dump($array);
eg2:print_r(array)
$array = array('hello', 'world', 'nihao', 'shijie');
print_r($array);
如何遍歷數組
注:你可能會疑惑什么叫遍歷數組:說白了就是把數組里面的元素一個個的取出來看看,你有一袋糖果,這個整體就是數組,里面的單個糖果就是元素,一個個的吃了,這就是遍歷。
eg1: for循環遍歷數組
看一下結果(在控制臺輸出):
eg2: while循環遍歷數組(此法涉及list()與echo()函數,請自行了解作用)
數組排序
注:這里通過對數組函數的使用,了解關于數組排序的幾種方式以及需要注意的地方。
eg1: sort(array)打亂數組鍵,對數組進行正序排列
我們看到$array鍵被摧毀,值按照字典正序排列
eg2: rsort(array)摧毀數組鍵,并對數組進行反序排列
eg3: ksort(array)對數組按照鍵名排序
注:排序的方法與函數還有很多,排序算法一直是算法入門的基礎,如經典的冒泡排序法,插入排序,快速排序等等,所以我們完全可以使用PHP自定義排序算法,這里不講,因為對于小白來說還是略有點不好理解的,等后面有機會再說,理解能力強的也可以自行百度。
數組鍵值交換
注:這里我之所以優先介紹一下array_flip(),因為我接下來會有一個“奇技淫巧”需要傳授給大家。
eg1: array_flip(array)對數組進行鍵值互換
數組元素去重
注:這里第二個例子將介紹一個高級用法,也是我為什么先介紹array_flip()的原因。
eg1: array_unique(array)去重
eg2: 使用array_flip()兩次鍵值互換達到數組去重的目的
注解:這個技巧可能一些半吊子PHPer也不甚了解,甚至可能會存在疑惑,使用一次函數能解決的事情干嘛要使用兩次函數?
首先二種方法不同的是用array_flip得到的是重復元素最后的鍵和值,用array_unique得到的是兩個重復元素第一個鍵和值。
然后是array_flip()效率更高,你可以對大數組進行性能測試,array_flip()方法去重比array_unique()方法內存占用要減少4/5,運行時間更是節省90%以上。
判斷某元素是否在指定數組中
把一個或多個數組合并為一個數組
判斷類型是否為數組
注:我們在實際開發中,經常需要對參數類型進行判斷,其中就可以用到is_array()
總結:函數這個東西,其實看看解釋基本就會用了,最重要的是如何有技巧的使用函數,這一點需要大家以后慢慢積累。另外寫代碼要細心,往往一個不經意間的“理想”代碼就會帶來一定的bug。
某以前在工作中曾被領導批過,使用代碼刪除服務器上文件的時候,有一層判斷,其中類似有一句如下簡單的代碼
if($i = 0; $i < count($array); $i++)
我們都知道count(array)可以計算出數組中有多少個元素,比如有三個,那么這個循環會執行幾次呢? ?0->1->2,這樣是三次正好。
可是你如果寫成了$i ≤ count($array)呢?
0->1->2->3那就執行了四次!
希望大家今后寫代碼時都可以長點心。