PHP關聯陣列的一些提示_PHP教程

來源:互聯網
上載者:User
在使用 PHP 進行開發的過程中,或早或晚,您會需要建立許多相似的變數,這時候你可以把資料作為元素儲存在數組中。數組中的元素都有自己的 ID,因此可以方便地訪問它們。

關聯陣列

關聯陣列,它的每個 ID 鍵都關聯一個值。在儲存有關具體命名的值的資料時,使用數值數組不是最好的做法。通過關聯陣列,我們可以把值作為鍵,並向它們賦值。

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

1、添加數組元素

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

$capitals = array(    'Alabama' => 'Montgomery',    'Alaska'  => 'Juneau',    'Arizona' => 'Phoenix'  ); 

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

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

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

2、刪除數組元素

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

unset($capitals['California']); 

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

3、交換鍵和值

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

$capitals = array(    'Alabama' => 'Montgomery',    'Alaska'  => 'Juneau',    'Arizona' => 'Phoenix'  );  $states = array_flip($capitals);  // $states = array(  //  'Montgomery' => string 'Alabama',  //  'Juneau'     => string 'Alaska',  //  'Phoenix'    => string 'Arizona'  // ); 

4、合并數組

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

$stateCapitals = array(    'Alabama' => 'Montgomery',    'Alaska'  => 'Juneau',    'Arizona' => 'Phoenix'  );  $countryCapitals = array (    'Australia' => 'Canberra',    'Austria'   => 'Vienna',    'Algeria'   => 'Algiers'  );  $capitals = array_merge($stateCapitals, $countryCapitals); 

5、編輯數組值

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

function capitalize($element)  {    $element = strtolower($element);    return ucwords($element);  }  $capitals = array(    'Alabama' => 'montGoMEry',    'Alaska'  => 'Juneau',    'Arizona' => 'phoeniX'  );  $capitals = array_map("capitalize", $capitals); 

6、按鍵對數組排序

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  ksort($capitals); 

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

7、隨機數組排序

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  shuffle($capitals); 

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

8、確定鍵和值是否存在

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  if (in_array("Juneau", $capitals))  {    echo "Exists!";  } else {    echo "Does not exist!";  } 

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  if (array_key_exists("Alaska", $capitals))  {    echo "Key exists!";  } else {    echo "Key does not exist!";  } 

9、搜尋數組

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  $state = array_search('Juneau', $capitals);  // $state = 'Alaska' 

10、標準PHP庫

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

$capitals = array(    'Arizona' => 'Phoenix',    'Alaska'  => 'Juneau',    'Alabama' => 'Montgomery'  );  $arrayObject = new ArrayObject($capitals);  foreach ($arrayObject as $state => $capital)  {    printf("The capital of %s is %s
", $state, $capital); } // The capital of Arizona is Phoenix // The capital of Alaska is Juneau // The capital of Alabama is Montgomery

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

http://www.bkjia.com/PHPjc/752336.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752336.htmlTechArticle在使用 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.