PHP關聯陣列的10個技巧

來源:互聯網
上載者:User

這篇文章將介紹10個操作PHP關聯陣列的技巧,熟練運用能協助你提高開發效率。

1、添加數組元素

PHP是一種弱類型語言,這意味著你不需要顯示聲明一個數組及其大小,相反,你可以同時聲明並填充數組。

  1. $capitals = array(  
  2.   'Alabama' => 'Montgomery',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Arizona' => 'Phoenix'  
  5. ); 

額外的數組元素可以象下面這樣追加:

  1. $capitals['Arkansas'] = 'Little Rock'; 

如果你正在處理數字索引數組,你可能想使用顯示命名的函數前置和追加元素,如array_push()和array_unshift()函數,但這些函數不能操作關聯陣列。

2、刪除數組元素

如果要從數組中刪除一個元素,請使用unset()函數,如:

  1. unset($capitals['California']); 

使用數字索引數組時,刪除數組元素的辦法更多,更靈活,可以使用array_shift()和array_pop()函數分別從數組的開頭和末尾刪除一個元素。

3、交換鍵和值

假設你想建立一個名叫$states的新數組,使用州府作為索引,使用州名作為關聯值,使用array_flip()函數很容易完成這個任務。

  1. $capitals = array(  
  2.   'Alabama' => 'Montgomery',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Arizona' => 'Phoenix'  
  5. );  
  6. $states = array_flip($capitals);  
  7. // $states = array(  
  8. //  'Montgomery' => string 'Alabama',  
  9. //  'Juneau'     => string 'Alaska',  
  10. //  'Phoenix'    => string 'Arizona'  
  11. // ); 

4、合并數組

假設前面的數組由一個基於Web的“FlashCard”服務使用,你想提供一種方法測試學生對美國各州首府的掌握情況,你可以使用array_merge()函數合并包含州和首府的數組。

  1. $stateCapitals = array(  
  2.   'Alabama' => 'Montgomery',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Arizona' => 'Phoenix'  
  5. );  
  6. $countryCapitals = array (  
  7.   'Australia' => 'Canberra',  
  8.   'Austria'   => 'Vienna',  
  9.   'Algeria'   => 'Algiers'  
  10. );  
  11. $capitals = array_merge($stateCapitals, $countryCapitals); 

5、編輯數組值

假設在數組中的資料包含大小寫錯誤,在插入到資料庫之前,你想糾正這些錯誤,你可以使用array_map()函數給每個數組元素應用一個回調。

  1. function capitalize($element)  
  2. {  
  3.   $element = strtolower($element);  
  4.   return ucwords($element);  
  5. }  
  6. $capitals = array(  
  7.   'Alabama' => 'montGoMEry',  
  8.   'Alaska'  => 'Juneau',  
  9.   'Arizona' => 'phoeniX'  
  10. );  
  11. $capitals = array_map("capitalize", $capitals); 

6、按鍵對數組排序

FlashCard程式常常使用各種排序,如按字母順序排序,你可以使用ksort()函數按鍵對關聯陣列進行排序。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. ksort($capitals); 

因為數組是通過參數傳遞給ksort()函數的,意味著你不再需要將排序結果分配給另一個變數。

7、隨機數組排序

在FlashCard程式中還涉及到另一種隨機排序技術,這時你要使用shuffle()函數實現數組項目的隨機排序。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. shuffle($capitals); 

如果不需要打亂數組順序,你只是想隨機播放一個值,那麼使用array_rand()函數即可。

8、確定鍵和值是否存在

你可以使用in_array()函數確定一個數組元素是否存在。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. if (in_array("Juneau", $capitals))  
  7. {  
  8.   echo "Exists!";  
  9. } else {  
  10.   echo "Does not exist!";  

很少有人知道這個函數也可以確定一個數組鍵是否存在,在這一點上,它和array_key_exists()函數的功能一樣。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. if (array_key_exists("Alaska", $capitals))  
  7. {  
  8.   echo "Key exists!";  
  9. } else {  
  10.   echo "Key does not exist!";  

9、搜尋數組

你可能想搜尋數組資源,這樣使用者就可以方便地用一個特定的州府檢索關聯的州,可以通過array_search()函數實現數組搜尋。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. $state = array_search('Juneau', $capitals);  
  7. // $state = 'Alaska' 

10、標準PHP庫

標準PHP庫(Standard PHP Library,SPL)為開發人員提供了許多資料結構,迭代器,介面,異常和其它以前PHP語言沒有的功能,使用這些功能可以通過物件導向的文法遍曆數組。

  1. $capitals = array(  
  2.   'Arizona' => 'Phoenix',  
  3.   'Alaska'  => 'Juneau',  
  4.   'Alabama' => 'Montgomery'  
  5. );  
  6. $arrayObject = new ArrayObject($capitals);  
  7. foreach ($arrayObject as $state => $capital)  
  8. {  
  9.   printf("The capital of %s is %s<br />", $state, $capital);  
  10. }  
  11. // The capital of Arizona is Phoenix  
  12. // The capital of Alaska is Juneau  
  13. // The capital of Alabama is Montgomery 

這僅僅是SPL眾多偉大功能中的一個,一定要閱讀PHP文檔瞭解更多資訊。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.