PHP 提供了多維數組和關聯數組,並提供了一系列數組函數。集合類別則提供了一組易於使用的 API 來實現進階集合操作,包括建立、過濾、映射和聚合集合。你可以利用這些特性來建構樹結構,篩選和映射數據,並執行聚合操作。
PHP高階特性:陣列與集合的深入探索
PHP提供了一系列強大且靈活的陣列與集合運算,允許開發者有效地管理和處理複雜的資料結構。本文將深入探討PHP陣列與集合的高階特性,並提供現實世界的實戰案例,幫助你充分利用這些特性。
一、陣列特性
PHP支援多維數組,允許建立嵌套的資料結構。你可以使用array_walk_recursive()
遞歸遍歷多維數組,或是使用array_reduce()
進行歸約運算。
$tree = array( 'level1' => array( 'level2' => array( 'data' => 'value' ) ) ); array_walk_recursive($tree, function($value, $key) { echo "$key: $value\n"; });
關聯陣列使用鍵名稱與值進行關聯,以便根據鍵名快速尋找和擷取值。 PHP提供了、
==
和===
等比較運算符,用於比較關聯數組中的值。
$assoc = array( 'name' => 'John Doe', 'age' => 30 ); if ($assoc['name'] == 'John Doe') { echo 'Name matches'; }
PHP提供了一系列內建的陣列函數,用於操縱數組,如array_merge()
(合併陣列)、array_filter()
(過濾陣列)、array_map()
(映射陣列)等。
$numbers = array(1, 2, 3, 4, 5); $filteredNumbers = array_filter($numbers, function($num) { return $num % 2 == 0; });
二、集合類
除了原生數組,PHP還引入了Collection
類,提供了一組易於使用的API來實現高階集合運算。
可以使用Collection::make()
方法建立Collection
對象。
$collection = Collection::make(['foo', 'bar', 'baz']);
#Collection
類別提供了filter()
和map()
方法,分別用於過濾和映射集合中的元素。
$filteredCollection = $collection->filter(function($item) { return is_string($item); }); $mappedCollection = $collection->map(function($item) { return strtoupper($item); });
#Collection
類別也提供了sum()
、average()
和reduce()
等聚合方法,用於從集合中計算總和值。
$sum = $collection->sum(); $average = $collection->average();
實戰案例
使用多維數組建立樹狀結構
$tree = array(); $tree['root'] = array( 'left' => array( 'data' => 'left branch' ), 'right' => array( 'data' => 'right branch' ) ); array_walk_recursive($tree, function($value, $key) { if ($value != 'root') { echo "$key: $value\n"; } });
使用集合過濾和映射資料
$users = [ ['name' => 'John Doe', 'age' => 30], ['name' => 'Jane Doe', 'age' => 25], ]; $collection = Collection::make($users); $filteredCollection = $collection->filter(function($user) { return $user['age'] > 25; }); $mappedCollection = $collection->map(function($user) { return $user['name']; });
以上是PHP高階特性:陣列與集合的深入探索的詳細內容。更多資訊請關注PHP中文網其他相關文章!