這篇文章主要介紹了關於php的一些數組,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
類比資料結構
數組後添加
array_push$a=array("red","green");array_push($a,"blue","yellow");Array ( [0] => red [1] => green [2] => blue [3] => yellow )
數組前添加
array_unshift$a=array("a"=>"red","b"=>"green");array_unshift($a,"blue");Array ( [0] => blue [a] => red [b] => green )
數組前刪除
$a=array("a"=>"red","b"=>"green","c"=>"blue");echo array_shift($a);redArray ( [b] => green [c] => blue )
數組後刪除
$a=array("red","green","blue");array_pop($a);Array ( [0] => red [1] => green )
php基礎篇-二維數組排序 array_multisort
對2維數組或者多維陣列排序是常見的問題,在php中我們有個專門的多維陣列排序函數,下面簡單介紹下:
array_multisort(array1,sorting order, sorting type,array2,array3..)是對多個數組或多維陣列進行排序的函數。
array1 必需。規定輸入的數組。
sorting order 可選。規定排列順序。可能的值是 SORT_ASC 和 SORT_DESC。
sorting type 可選。規定排序類型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
array2 可選。規定輸入的數組。
array3 可選。規定輸入的數組。
參數中的數組被當成一個表的列並以行來進行排序 - 這類似 SQL 的 ORDER BY 子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話,
就會按照下一個輸入數組中相應值的大小進行排序,依此類推。
第一個參數是數組,隨後的每一個參數可能是數組,也可能是下面的排序次序標誌(排序標誌用於更改預設的排列順序)之一:
SORT_ASC - 預設,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
隨後可以指定排序的類型:
SORT_REGULAR - 預設。將每一項按常規順序排列。
SORT_NUMERIC - 將每一項按數字順序排列。
SORT_STRING - 將每一項按字母順序排列
<?php function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){ if(is_array($arrays)){ foreach ($arrays as $array){ if(is_array($array)){ $key_arrays[] = $array[$sort_key]; }else{ return false; } } }else{ return false; } array_multisort($key_arrays,$sort_order,$sort_type,$arrays); return $arrays; } $person = array( array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180), array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150), array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156), array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190), array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200), array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110), array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170) ); var_dump($person); $person = my_sort($person,'name',SORT_ASC,SORT_STRING); var_dump($person); $person = my_sort($person,'weight'); var_dump($person); ?>
例如像下面的數組:
代碼如下:
$users = array( array('name' => 'tom', 'age' => 20) , array('name' => 'anny', 'age' => 18) , array('name' => 'jack', 'age' => 22));
希望能按照age從小到大進行排序。筆者整理了兩個方法出來,分享給大家。
1、使用array_multisort
使用這個方法,會比較麻煩些,要將age提取出來儲存到一維數組裡,然後按照age升序排列。具體代碼如下:
代碼如下:
$ages = array();foreach ($users as $user) { $ages[] = $user['age'];}
array_multisort($ages, SORT_ASC, $users);
執行後,$users就是排序好的數組了,可以列印出來看看。如果需要先按年齡升序排列,再按照名稱升序排列,方法同上,就是多提取一個名稱數組出來,最後的排
序方法這樣調用:
代碼如下:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
這裡的重點就是,先把要排序的key存到一個一維數組中,然後就可以使用array_multisort()這個函數,將數組按照key進行排序了,當然,這裡的排序你完全可以
不適用array_multisort()這個函數,
僅僅通過foreach遍曆也能達到這個效果,但是既然php開發人員給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。
PHP二維數組去重複項函數
PHP數組去除重複項 有個內建函數array_unique (),但是php的 array_unique函數只適用於一維數組,對多維陣列並不適用,以下提供一個二維數組 的
array_unique函數
function unique_arr($array2D,$stkeep=false,$ndformat=true) { // 判斷是否保留一級數組鍵 (一級數組鍵可以為非數字) if($stkeep) $stArr = array_keys($array2D); // 判斷是否保留二級數組鍵 (所有二級數組鍵必須相同) if($ndformat) $ndArr = array_keys(end($array2D)); //降維,也可以用implode,將一維數群組轉換為用逗號串連的字串 foreach ($array2D as $v){ $v = join(",",$v); $temp[] = $v; } //去掉重複的字串,也就是重複的一維數組 $temp = array_unique($temp); //再將拆開的數組重新組裝 foreach ($temp as $k => $v) { if($stkeep) $k = $stArr[$k]; if($ndformat) { $tempArr = explode(",",$v); foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval; } else $output[$k] = explode(",",$v); } return $output; } $array2D=array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); print_r($array2D); print_r(unique_arr($array2D,true));
相關推薦:
php數組函數序列之array_pop()刪除數組中的最後一個元素
PHP數組如何賦值