1.建立處理數組的類ArrayList.phpphp
<?php /** * ArrayList實現類 * @author liu21st <liu21st@gmail.com> */ class ArrayList implements \IteratorAggregate { /** * 集合元素 * @var array * @access protected */ protected $elements = []; /** * 架構函數 * @access public * @param string $elements 初始化數組元素 */ public function __construct($elements = []) { if (!empty($elements)) { $this->elements = $elements; } } /** * 若要得到迭代因子,經過getIterator方法實現 * @access public * @return ArrayObject */ public function getIterator() { return new \ArrayObject($this->elements); } /** * 增長元素 * @access public * @param mixed $element 要添加的元素 * @return boolean */ public function add($element) { return (array_push($this->elements, $element)) ? true : false; } // 在數組開頭插入一個單元 public function unshift($element) { return (array_unshift($this->elements, $element)) ? true : false; } // 將數組最後一個單元彈出(出棧) public function pop() { return array_pop($this->elements); } /** * 增長元素列表 * @access public * @param ArrayList $list 元素列表 * @return boolean */ public function addAll($list) { $before = $this->size(); foreach ($list as $element) { $this->add($element); } $after = $this->size(); return ($before < $after); } /** * 清除全部元素 * @access public */ public function clear() { $this->elements = []; } /** * 是否包含某個元素 * @access public * @param mixed $element 查找元素 * @return string */ public function contains($element) { return (array_search($element, $this->elements) !== false); } /** * 根據索引取得元素 * @access public * @param integer $index 索引 * @return mixed */ public function get($index) { return $this->elements[$index]; } /** * 查找匹配元素,並返回第一個元素所在位置 * 注意 可能存在0的索引位置 所以要用===False來判斷查找失敗 * @access public * @param mixed $element 查找元素 * @return integer */ public function indexOf($element) { return array_search($element, $this->elements); } /** * 判斷元素是否爲空 * @access public * @return boolean */ public function isEmpty() { return empty($this->elements); } /** * 最後一個匹配的元素位置 * @access public * @param mixed $element 查找元素 * @return integer */ public function lastIndexOf($element) { for ($i = (count($this->elements) - 1); $i > 0; $i--) { if ($this->get($i) == $element) { return $i; } } } public function toJson() { return json_encode($this->elements); } /** * 根據索引移除元素 * 返回被移除的元素 * @access public * @param integer $index 索引 * @return mixed */ public function remove($index) { $element = $this->get($index); if (!is_null($element)) { array_splice($this->elements, $index, 1); } return $element; } /** * 移出必定範圍的數組列表 * @access public * @param integer $offset 開始移除位置 * @param integer $length 移除長度 */ public function removeRange($offset, $length) { array_splice($this->elements, $offset, $length); } /** * 移出重複的值 * @access public */ public function unique() { $this->elements = array_unique($this->elements); } /** * 取出必定範圍的數組列表 * @access public * @param integer $offset 開始位置 * @param integer $length 長度 */ public function range($offset, $length = null) { return array_slice($this->elements, $offset, $length); } /** * 設置列表元素 * 返回修改以前的值 * @access public * @param integer $index 索引 * @param mixed $element 元素 * @return mixed */ public function set($index, $element) { $previous = $this->get($index); $this->elements[$index] = $element; return $previous; } /** * 獲取列表長度 * @access public * @return integer */ public function size() { return count($this->elements); } /** * 轉換成數組 * @access public * @return array */ public function toArray() { return $this->elements; } // 列表排序 public function ksort() { ksort($this->elements); } // 列表排序 public function asort() { asort($this->elements); } // 逆向排序 public function rsort() { rsort($this->elements); } // 天然排序 public function natsort() { natsort($this->elements); } }
2.將ArrayList.php放到項目根目錄下的extend文件夾下json
3.在測試文件中寫入測試代碼數組
4.瀏覽器打開測試頁面展現瀏覽器