首頁  >  文章  >  後端開發  >  php的一些數組

php的一些數組

不言
不言原創
2018-04-23 16:37:371032瀏覽

這篇文章主要介紹了一些關於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(&#39;id&#39;=>1,&#39;name&#39;=>&#39;fj&#39;,&#39;weight&#39;=>100,&#39;height&#39;=>180),  
                        array(&#39;id&#39;=>2,&#39;name&#39;=>&#39;tom&#39;,&#39;weight&#39;=>53,&#39;height&#39;=>150),  
                        array(&#39;id&#39;=>3,&#39;name&#39;=>&#39;jerry&#39;,&#39;weight&#39;=>120,&#39;height&#39;=>156),  
                        array(&#39;id&#39;=>4,&#39;name&#39;=>&#39;bill&#39;,&#39;weight&#39;=>110,&#39;height&#39;=>190),  
                        array(&#39;id&#39;=>5,&#39;name&#39;=>&#39;linken&#39;,&#39;weight&#39;=>80,&#39;height&#39;=>200),  
                        array(&#39;id&#39;=>6,&#39;name&#39;=>&#39;madana&#39;,&#39;weight&#39;=>95,&#39;height&#39;=>110),  
                        array(&#39;id&#39;=>7,&#39;name&#39;=>&#39;jordan&#39;,&#39;weight&#39;=>70,&#39;height&#39;=>170)  
                    );  
        var_dump($person);  
        $person = my_sort($person,&#39;name&#39;,SORT_ASC,SORT_STRING);  
        var_dump($person);   
        $person = my_sort($person,&#39;weight&#39;);  
        var_dump($person);  
    ?>

例如像下面的數組:
代碼如下:

##

$users = array(
  array(&#39;name&#39; => &#39;tom&#39;, &#39;age&#39; => 20)
  , array(&#39;name&#39; => &#39;anny&#39;, &#39;age&#39; => 18)
  , array(&#39;name&#39; => &#39;jack&#39;, &#39;age&#39; => 22)
);

希望能依照age從小到大進行排序。筆者整理了兩個方法出來,分享給大家。

1、使用array_multisort
使用這個方法,會比較麻煩些,要將age提取出來儲存到一維數組裡,然後按照age升序排列。具體程式碼如下:
程式碼如下:


$ages = array();
foreach ($users as $user) {
  $ages[] = $user[&#39;age&#39;];
}
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(&#39;first&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;second&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;third&#39;=>array
(&#39;title&#39;=>&#39;2222&#39;,&#39;date&#39;=>&#39;3333&#39;));  
    print_r($array2D);  
    print_r(unique_arr($array2D,true));

相關推薦:

php數組函數序列之array_pop()刪除數組中的最後一個元素

PHP陣列如何賦值

以上是php的一些數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:php的字串下一篇:php的字串