在PHP應用中,數組是用得最廣泛的數據結構了。基本可以這麼說,熟練掌握數組你就可以熟練掌握PHP的大部分了。下面將PHP的數組操作進行匯總介紹下,或許有你不懂或不怎麼了解的數組操作。
將數組的內部指針倒回一位:
/** * 將數組的內部指針倒回一位 * @param array &$arr * @return mixed 返回前一個單元的值,當沒有更多單元時返回 FALSE * 如果數組包含空的單元,或者單元的值是 0 則本函數碰到這些單元也返回 FALSE * 要正確遍歷可能含有空單元或者單元值為 0 的數組,參見 each() 函數 */ mixed prev(array &$arr); <?php $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot'; $mode = next($transport); // $mode = 'bike'; $mode = next($transport); // $mode = 'car'; $mode = prev($transport); // $mode = 'bike'; $mode = end($transport); // $mode = 'plane'; $mode = reset($transport) ;//$mode = 'foot'; ?>
把數組中的單元轉換為變量:
array("key"=>"value");建立數組 //顯示數組 print_r($array); //使用compact()函數新建數組,並把參數做為新數組的單元; $newArray = compact("red","green","yellow","blue","array"); //使用extract()函數把數組中的單元轉換為變量 extract($exArray); echo "$key1 $key2 $key3 $key4 $key5";
檢查值、鍵:
array_key_exists($key,$array);//檢查數組鍵 in_array($value,$array);//檢查值於數組
獲取值:
//使用array_values()取得數組的值 $carValues = array_values($car); //取出數組的鍵名 $twoKeys = array_keys($two); key($array);//輸出當前單元的鍵名 //數組定義後,使用current()取得當前單元的值 $red = current($array); list($red,$green) = $array;//把數組中的值賦與變量,$array = array("紅色","綠色"); each($two);//返回數組中當前單元的鍵和值
遍歷數組:
foreach($two as $subArray);//遍歷數組 while(list($key,$value) = each($array)){ echo "$key=>$value,";//使用each遍歷數組 }
填充數組:
//向左、右填充數組 array_pad($array,+3,"shuzhi");//2參數為正從左往右填充,數值大於單元數時才填充 $array1 = array_fill(5,5,"test");//使用array_fill()填充這個數組的值,值為test,從第5個單元開始填充,一共填充5個單元 //填充數組鍵名 $keys = array('string', 5, 10, 'str'); $array3 = array_fill_keys($keys,"數組值"); //使用array_filp()函數交換鍵名與值 $speed = array_flip($speed); //使用array_splice()函數替換第6個單元的值為7 $output = array_splice($input,6,0,7); //使用array_splice()函數刪除數組單元,只保留前5個單元 $output = array_splice($input,5); $array1 = range(10,100,10); //使用range()函數的第三個參數,設置單元之間的步進值
排序:
shuffle($array);//將數組順序打亂 //使用array_multisort()對三個數組排序 array_multisort($sort1,$sort2,$sort3); //把這個數組進行排序,並保持索引關系 asort($array); //把測試數組進行逆向排序,並保持索引關系 arsort($array); //使用ksort()對數組按鍵名排序 ksort($array); //使用krsort()函數按鍵名逆向排序 krsort($array); //使用sort()對測試數組進行排序[以鍵名排列] sort($array); //使用natsort()排序[自然排序,以數值排列]對單元數值大小寫敏感 natsort($array); //使用natcasesort()函數排序[自然排序]但是忽略數值大小寫 natcasesort($array); //使用array_reverse()函數排序,數組單元按相反排列 $newArray = array_reverse($array,TRUE);//TRUE設時保留原鍵名
交集、差集:
//使用array_diff()計算三個數組的差集[對數組數值比較] $result = array_diff($dog1,$dog2,$dog3); //使用array_diff_assoc()計算三個數組的差集[對數值和鍵名比較] $result = array_diff_assoc($dog1,$dog2,$dog3); //使用array_diff_key()計算三個數組的差集[比較鍵名] $result = array_diff_key($dog1,$dog2,$dog3); //使用array_intersect()計算三個數組的交集[對數組數值比較] $result = array_intersect($dog1,$dog2,$dog3); //使用array_intersect_assoc()計算三個數組的交集[對數值和鍵名比較] $result = array_intersect_assoc($dog1,$dog2,$dog3); //使用array_intersect_key()計算三個數組的交集[比較鍵名] $result = array_intersect_key($dog1,$dog2,$dog3);
合並數組:
//使用array_merge()函數合並數組 $result = array_merge($array1,$array2,$array3,$array4,$array5); array_rand($input,10);//隨機取出10個單元 count($array,COUNT_RECURSIVE);//顯示數組單元數目,2參數只可為1或者COUNT_RECURSIVE,有時可遍歷多維數組
出入棧:
//數組出棧,後進先出,數組最後一個單元彈出 array_pop($array); //數組入棧,將7,8兩個數值添加到數組尾部 array_push($array,7,8); //將數組開頭單元移出數組 array_shift($array); //將7,8添加入數組開頭 array_unshift($array,7,8);