1.创建处理数组的类ArrayList.php

<?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文件夹下的shuzu文件夹下

3.在测试文件中写入测试代码

4.浏览器打开测试页面展示

最新文章

  1. qsort C++ VS2013 leetcode
  2. CSS拉伸resize
  3. nginx 设置 fastcgi缓存
  4. ”isEqual“ ”isEqalToString“ 和“==”三者区别
  5. 吉日嘎拉DotNet.BusinessV4.2中的一处bug,及我的修复和扩展
  6. 20145208 实验二 Java面向对象程序设计
  7. Unity3d iOS基本优化和高级优化
  8. java基础之 http
  9. [DevExpress]ChartControl之柱状图示例
  10. SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏
  11. HTML5数组方法
  12. C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(转)
  13. SPOJ 705 Distinct Substrings(后缀数组)
  14. C++,对象的 =赋值 以及 复制构造函数赋值
  15. [转发]读取txt防止读到乱码--自动根据文件编码进行读取
  16. 问题排查:The requested URL /test/index.jsp was not found on this server
  17. 使用mpvue开发小程序教程(四)
  18. mysql权限参考
  19. maven+springMVC+mybatis+sqlserver数据
  20. java语言的特征

热门文章

  1. Python进程、线程、协程的对比
  2. Uncaught ReferenceError: is not defined
  3. RocketMQ消费者实践
  4. hdu 3007【最小圆覆盖-随机增量法模板】
  5. codeforces 880E. Maximum Subsequence(折半搜索+双指针)
  6. concurrent包下的Exchanger练习
  7. 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
  8. Unix\Linux | 总结笔记 | 命令_ WC
  9. Visual studio docker build no such file or directory
  10. 【Hibernate】多对多关系的表达