這篇文章主要介紹了一些關於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) );
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的一些數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!