如何利用php数组对百万数据进行排重如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作 。
经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用 。PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序 。在这篇文章中我们将讨论该排序中最重要的几个函数 。
简单排序
首先 , 让我们来看看最简单的情况:将一个数组元素从低到高进行简单排序,这个函数既可以按数字大小排列也可以按字母顺序排列 。PHP的sort()函数实现了这个功能 , 如Listing A所示:
Listing A
?php
? $data = https://www.04ip.com/post/array(5,8,1,7,2);
? sort($data);
? print_r($data);
? ?
输出结果如下所示:
Array ([0] = 1
[1] = 2
[2] = 5
[3] = 7
[4] = 8
)
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO) 。
PHP
SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现 。
SplQueue类摘要如下:
SplQueue简单使用如下:
复制代码
代码如下:
$queue
=
new
SplQueue();
/**
*
可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
*
(1)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_KEEP
【php数组数据结构 php中数组的概念是什么】(默认值,迭代后数据保存)
*
(2)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE
(迭代后数据删除)
*/
$queue-setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_DELETE);
//SplQueue::enqueue()其实就是
SplDoublyLinkedList::push()
$queue-enqueue('a');
$queue-enqueue('b');
$queue-enqueue('c');
//SplQueue::dequeue()其实就是
SplDoublyLinkedList::shift()
print_r($queue-dequeue());
foreach($queue
as
$item)
{
echo
$item
.
PHP_EOL;
}
print_r($queue);
而优先队列SplPriorityQueue是基于堆(后文介绍)实现的 。
SplPriorityQueue的类摘要如下:
SplPriorityQueue简单使用:
$pq
=
new
SplPriorityQueue();
$pq-insert('a',
10);
$pq-insert('b',
1);
$pq-insert('c',
8);
echo
$pq-count()
.PHP_EOL;
//3
echo
$pq-current()
.
PHP_EOL;
//a
/**
*
设置元素出队模式
*
SplPriorityQueue::EXTR_DATA
仅提取值
*
SplPriorityQueue::EXTR_PRIORITY
仅提取优先级
*
SplPriorityQueue::EXTR_BOTH
提取数组包含值和优先级
*/
$pq-setExtractFlags(SplPriorityQueue::EXTR_DATA);
while($pq-valid())
{
print_r($pq-current());
//a
c
b
$pq-next();
}
php中数组的分类有哪两种?1、索引数组
有两种创建索引数组php数组数据结构的方法php数组数据结构:
索引是自动分配的(索引从 0 开始):
$cars=array("porsche","BMW","Volvo");
2、关联数组
关联数组是使用您分配给数组的指定键的数组 。
有两种创建关联数组的方法:
$age=array("Bill"="35","Steve"="37","Elon"="43");
推荐阅读
- 电脑直播手机玩游戏,电脑直播手机玩游戏怎么设置
- jquery是做什么开发的,jquery 是什么
- steam装修经营游戏,steam装修类游戏
- erp系统失效,erp系统常见问题解决
- 鸿蒙桌面小艺设置,鸿蒙系统小艺
- pdf双面打印怎么能不反,pdf双面打印怎么能不反转呢
- 手机快手直播伴侣浮窗,快手直播伴侣怎么开悬浮窗
- php根据数据添加表格 php向mysql添加数据
- 审核视频什么,审核视频是什么