導航:首頁 > 編程語言 > 如何迭代php數組

如何迭代php數組

發布時間:2024-06-22 04:23:37

php設計模式介紹之迭代器模式

《PHP設計模式介紹》第八章 迭代器模式

類中的面向對象編程封裝應用邏輯 類 就是實例化的對象 每個單獨的對象都有一個特定的身份和狀態 單獨的對象是一種組織代碼的有用方法 但通常你會處理一組對象或者集合

屬性來自 SQL 查陵空詢的一組數據就是一個集合 就像本書前面章節介紹的 Monopoly 游戲示例的對象列表

集合不一定是均一的 圖形用戶界面框架中的 Window 對象可以收集任意數量的控制對象 - Menu Slider 和 Button 並且 集合的實現可以有多種方式 PHP 數字是一個集合 但也是一個散列表 一個鏈接列表 一個堆棧以及隊列

問題

如何操縱任意的對象集合?

解決方案

使用迭代器模式來提供對集合內容的統一存取

你可能沒有意識到這一點 但你每天都在使汪拿用迭代器模式 - 它潛藏在 PHP 的數組類型和各種數組操作函數中 (其實 給你一些固有類的數組的組合和一群用這些固有類工作的可變函數 你將不得不使用這些數組來處理對象集合 這是在 PHP 中的本地數組迭代

$test = array( one o three );$output = ; reset($test); do {$output = current($test);} while (next($test));echo $output; // proces oneothree

reset() 函數將迭代重新轉到數組的開始 current() 返回當前元素的值 next() 則前進至數組中的下一個元素並返回新的 current() 值 當你超出數組的最後一個元素時 next() 返回 false 使用這些迭代方法 PHP 數組的內部實現就與你不相關了 迭代器結合了封裝和多態的面向對象程序設計原理 使用迭代器 你可以對集合中的對象進行操作 而無需專門了解集合如何顯現或者集合包含什麼(對象的種類) 迭代器提供了不同固定迭代實現的統一介面 它完全包含了如何操縱特定集合的詳細信息 包括顯示哪些項(過尺陵瞎濾)及其顯示順序(排序)

讓我們創建一個簡單的對象 在數組中對它進行操作 (盡管該示例在 PHP 環境下 但迭代器並不特定於 PHP 雖然添加了較多的引用操作符 本章節中的大多數示例在 PHP 下也能夠運行) 對象 Lendable 表示諸如電影 相冊等媒體 它作為 Web 站點的一部分或服務 允許用戶瀏覽或將他們的媒體集合分享給其他用戶 (對 於該示例 請無需考慮其他方面 )讓我們開始下面對 Lendable 基礎設計的測試

// PHP class LendableTestCase extends UnitTestCase {function TestCheckout() {$item = new Lendable;$this >assertFalse($item >borrower);$item >checkout( John );$this >assertEqual( borrowed $item >status);$this >assertEqual( John $item >borrower);}function TestCheckin() {$item = new Lendable;$item >checkout( John );$item >checkin();$this >assertEqual( library $item >status);$this >assertFalse($item >borrower);}}

要實現這一最初測試的需求 我們來創建一個帶有若干公共屬性和一些方法的類 來觸發這些屬性的值

class Lendable {public $status = library ;public $borrower = ;public function checkout($borrower) {$this >status = borrowed ;$this >borrower = $borrower;}public function checkin() {$this >status = library ;$this >borrower = ;}}

Lendable 是一個好的 普通的開端 讓我們將它擴展到諸如 DVD 或 CD 的磁軌項 媒體擴展了 Lendable 並且磁軌詳細記錄了特定媒體的詳細信息 包括項目的名稱 發布的年份以及項本身的類型

class Media extends Lendable {public $name; public $type; public $year;public function __construct($name $year $type= dvd ) {$this >name = $name;$this >type = $type;$this >year = (int)$year;}}

要使事情更加簡單 媒體有三個公共的實例變數 Media::name Media::year 和Media::type 構造函數採用了兩個參數 將第一個存儲在 $name 中 第二個存儲在 $year 中 構造函數還允許可選的第三個參數來指定類型(預設為dvd)

給定單獨的對象來操作 你現在可以創建一個容器來包含他們 Library 類似於常用的庫 Library 應該能夠添加 刪除和計算集合中的項 甚至 Library 還應該允許訪問集合(本章中的樣本代碼部分可看到示例)中的單一的項(對象)

我們開始構建 Library 的測試用例

class LibraryTestCase extends UnitTestCase {function TestCount() {$lib = new Library;$this >assertEqual( $lib >count());}}

它是滿足這一測試的簡單類

class Library {function count() {return ;}}

繼續將一些有趣的功能添加到測試中

class LibraryTestCase extends UnitTestCase {function TestCount() { /* */ }function TestAdd() {$lib = new Library;$lib >add( one );$this >assertEqual( $lib >count());}}

實現 add() 的簡單方法是建立在 PHP 靈活數組函數的基礎上 你可以將項添加到實例變數並使用 count() 來返回集合眾項的數量

class Library {protected $collection = array();function count() {return count($this >collection);}function add($item) {$this >collection[] = $item;}}

lishixin/Article/program/net/201311/13092

⑵ php 常用的數組函數都有哪些 作用是什麼有什麼特點 怎麼使用

php常用的數組函數的作用特點如下:


  1. array_change_key_case -- 返回字元串鍵名全為小寫或大寫的數組

  2. array_chunk -- 將一個數組分割成多個

  3. array_combine -- 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值

  4. array_count_values -- 統計數組中所有的值出現的次數

  5. array_diff_assoc -- 帶索引檢查計算數組的差集

  6. array_diff_key -- 使用鍵名比較計算數組的差集

  7. array_diff_uassoc -- 用用戶提供的回調函數做索引檢查來計算數組的差集

  8. array_diff_ukey -- 用回調函數對鍵名比較計算數組的差集

  9. array_diff -- 計算數組的差集

  10. array_fill_keys -- 使用指定的鍵和值填充數組

  11. array_fill -- 用給定的值填充數組

  12. array_filter -- 用回調函數過濾數組中的單元

  13. array_flip -- 交換數組中的鍵和值

  14. array_intersect_assoc -- 帶索引檢查計算數組的交集

  15. array_intersect_key -- 使用鍵名比較計算數組的交集

  16. array_intersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較索引

  17. array_intersect_ukey -- 用回調函數比較鍵名來計算數組的交集

  18. array_intersect -- 計算數組的交集

  19. array_key_exists -- 檢查給定的鍵名或索引是否存在於數組中

  20. array_keys -- 返回數組中所有的鍵名

  21. array_map -- 將回調函數作用到給定數組的單元上

  22. array_merge_recursive -- 遞歸地合並一個或多個數組

  23. array_merge -- 合並一個或多個數組

  24. array_multisort -- 對多個數組或多維數組進行排序

  25. array_pad -- 用值將數組填補到指定長度

  26. array_pop -- 將數組最後一個單元彈出(出棧)

  27. array_proct -- 計算數組中所有值的乘積

  28. array_push -- 將一個或多個單元壓入數組的末尾(入棧)

  29. array_rand -- 從數組中隨機取出一個或多個單元

  30. array_rece -- 用回調函數迭代地將數組簡化為單一的值

  31. array_replace_recursive -- 使用傳遞的數組遞歸替換第一個數組的元素

  32. array_replace -- 使用傳遞的數組替換第一個數組的元素

  33. array_reverse -- 返回一個單元順序相反的數組

  34. array_search -- 在數組中搜索給定的值,如果成功則返回相應的鍵名

  35. array_shift -- 將數組開頭的單元移出數組

  36. array_slice -- 從數組中取出一段

  37. array_splice -- 把數組中的一部分去掉並用其它值取代

  38. array_sum -- 計算數組中所有值的和

  39. array_udiff_assoc -- 帶索引檢查計算數組的差集,用回調函數比較數據

  40. array_udiff_uassoc -- 帶索引檢查計算數組的差集,用回調函數比較數據和索引

  41. array_udiff -- 用回調函數比較數據來計算數組的差集

  42. array_uintersect_assoc -- 帶索引檢查計算數組的交集,用回調函數比較數據

  43. array_uintersect_uassoc -- 帶索引檢查計算數組的交集,用回調函數比較數據和索引

  44. array_uintersect -- 計算數組的交集,用回調函數比較數據

  45. array_unique -- 移除數組中重復的值

  46. array_unshift -- 在數組開頭插入一個或多個單元

  47. array_values -- 返回數組中所有的值

  48. array_walk_recursive -- 對數組中的每個成員遞歸地應用用戶函數

  49. array_walk -- 對數組中的每個成員應用用戶函數

  50. array -- 新建一個數組

  51. arsort -- 對數組進行逆向排序並保持索引關系

  52. asort -- 對數組進行排序並保持索引關系

  53. compact -- 建立一個數組,包括變數名和它們的值

  54. count -- 計算數組中的單元數目或對象中的屬性個數

  55. current -- 返回數組中的當前單元

  56. each -- 返回數組中當前的鍵/值對並將數組指針向前移動一步

  57. end -- 將數組的內部指針指向最後一個單元

  58. extract -- 從數組中將變數導入到當前的符號表

  59. in_array -- 檢查數組中是否存在某個值

  60. key -- 從關聯數組中取得鍵名

  61. krsort -- 對數組按照鍵名逆向排序

  62. ksort -- 對數組按照鍵名排序

  63. list -- 把數組中的值賦給一些變數

  64. natcasesort -- 用「自然排序」演算法對數組進行不區分大小寫字母的排序

  65. natsort -- 用「自然排序」演算法對數組排序

  66. next -- 將數組中的內部指針向前移動一位

  67. pos -- current 的別名

  68. prev -- 將數組的內部指針倒回一位

  69. range -- 建立一個包含指定范圍單元的數組

  70. reset -- 將數組的內部指針指向第一個單元

  71. rsort -- 對數組逆向排序

  72. shuffle -- 將數組打亂

  73. sizeof -- count 的別名

  74. sort -- 對數組排序

  75. uasort -- 使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯

  76. uksort -- 使用用戶自定義的比較函數對數組中的鍵名進行排序

  77. usort -- 使用用戶自定義的比較函數對數組中的值進行排序


關於如何使用,那是要根據使用者需求來衡量,不能一言概括

使用語法如下:

<?php
$arr=array('Hello','World!');
$arr=implode(',',$arr);

echo$arr;
?>

結果是:HelloWorld!


如果你想更多的了解php的數組函數,我建議你詳細地去看看php手冊

php手冊官網:http://www.php.net/manual/zh/index.php

⑶ PHP-Array函數簡介-數組操作-php實例教程

count()計算數組中的元素數目或對象中的屬性個數。3current()返回數組中的當前元素。3each()返回數組中當前的鍵/值對並將數組指針向前移動一步。3end()將數組的內部指針指向最後一個元素。3extract()從數組中將變數導入到當前的符號表。3in_array()檢查數組中是否存在指定的值。4key()從關聯數組中取得鍵名。3krsort()對數組按照鍵名逆向排序。3ksort()對數組按照鍵名排序。3list()把數組中的值賦給一些變數。3natcasesort()用「自然排序」演算法對數組進行不區分大小寫字母的排序。4natsort()用「自然排序」演算法對數組排序。4next()將數組中的內部指針向前移動一位。3pos()current()
的別名。3prev()將數組的內部指針倒回一位。3range()建立一個包含指定范圍的元素的數組。3reset()將數組的內部指針指向第一個元素。3rsort()對數組逆向排序。3shuffle()把數組中的元素按隨機順序重新排列。3sizeof()count()
的別名。3sort()對數組排序。3uasort()使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯。3uksort()使用用戶自定義的比較函數對數組中的鍵名進行排序。3usort()使用用戶自定義的比較函數對數組中的值進行排序。3

⑷ php代碼foreach ($res AS $row)什麼意思

php代碼foreach ($res AS $row) 意思是:

每進行一次循環迭代,$res數組元素的值就會被賦值給 $row變數,並且數組指針會逐一地移動,直到到達最後一個數組元素。

例如:

<?php

$colors=array("red","green","blue","yellow");

foreach($colorsas$value){

echo"$value";

}

?>

(4)如何迭代php數組擴展閱讀:

PHP中數組是非常實用而且方便的一種數據類型,因為其支持鍵名數組。

foreach語法是專門針對PHP數組進行循環遍歷的語法結構。

foreach($array as $value){//循環數組$array 將每個值賦給$value變數

echo $value; //顯示

}

比如:

$array = array('a','b','c','d');

foreach($array as $value){

echo $value;

}

運行結果是:abcd。也就是逐個輸出數組內的值。

閱讀全文

與如何迭代php數組相關的資料

熱點內容
如何懟程序員面試官 瀏覽:258
應用加密的優缺點 瀏覽:72
程序員培訓班不給錢 瀏覽:511
一堆伺服器能做什麼盈利 瀏覽:365
v20方舟編譯器推送 瀏覽:393
痛點pdf 瀏覽:914
php二維數組取部分值 瀏覽:388
重構流程壓縮時間高效管控 瀏覽:688
phpform參數詳解 瀏覽:559
此伺服器未開啟是什麼意思 瀏覽:83
python怎樣定義全局變數 瀏覽:159
加密代碼和加密編碼 瀏覽:93
將項目部署到伺服器有什麼作用 瀏覽:437
自研演算法視頻大全 瀏覽:702
寶可夢源碼下載 瀏覽:343
python怎麼沒有中文 瀏覽:437
php音樂管理 瀏覽:622
英漢百科圖解詞典pdf 瀏覽:932
php中文轉unicode編碼 瀏覽:75
結構設計常用cad命令 瀏覽:94