| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- // $Id$
- /**
- +------------------------------------------------------------------------------
- * ArrayList实现类
- +------------------------------------------------------------------------------
- * @category Think
- * @package Think
- * @subpackage Util
- * @author liu21st <liu21st@gmail.com>
- * @version $Id$
- +------------------------------------------------------------------------------
- */
- class ArrayList extends Think implements IteratorAggregate
- {//类定义开始
- /**
- +----------------------------------------------------------
- * 集合元素
- +----------------------------------------------------------
- * @var array
- * @access protected
- +----------------------------------------------------------
- */
- protected $_elements = array();
- /**
- +----------------------------------------------------------
- * 架构函数
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @param string $elements 初始化数组元素
- +----------------------------------------------------------
- */
- public function __construct($elements = array())
- {
- 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 boolen
- +----------------------------------------------------------
- */
- 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 boolen
- +----------------------------------------------------------
- * @throws ThinkExecption
- +----------------------------------------------------------
- */
- 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 = array();
- }
- /**
- +----------------------------------------------------------
- * 是否包含某个元素
- +----------------------------------------------------------
- * @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
- +----------------------------------------------------------
- * @throws ThinkExecption
- +----------------------------------------------------------
- */
- public function indexOf($element)
- {
- return array_search($element, $this->_elements);
- }
- /**
- +----------------------------------------------------------
- * 判断元素是否为空
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @return boolen
- +----------------------------------------------------------
- */
- 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 ($element == $this->get($i)) { 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);
- }
- }//类定义结束
- ?>
|