php数据结构函数 php 数据结构

php程序员有必要学习数据结构与算法吗?没必要去学什么排序、查找的算法,没别要去学什么链表、堆栈、队列等数据结构的细节 。
提升主要是快速开发,接到项目可以一晚上交货的就是高手 。
不过工资与上面的都无关,工资主要决定于你和领导的关系 。
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例队列这种数据结构更简单,就像我们生活中排队一样 , 它的特性是先进先出(FIFO) 。
PHP
SPL中SplQueue类就是实现队列操作 , 和栈一样 , 它也可以继承双链表(SplDoublyLinkedList)轻松实现 。
SplQueue类摘要如下:
SplQueue简单使用如下:
复制代码
代码如下:
$queue
=
new
SplQueue();
/**
*
可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:
*
(1)SplDoublyLinkedList::IT_MODE_FIFO
|
SplDoublyLinkedList::IT_MODE_KEEP
(默认值,迭代后数据保存)
*
(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 date函数$currentDate
=
date("U");
//是替换成从一个起始时间(好象是1970年1月1日)以来的秒数
date("l",
$currentDate)
//这句貌似只起到一个作用,就是显示date("l")也就是星期几 。加上$currentDate没什么效果!
date("l",
$currentDate)
!=
"Monday";
//整句的意思是,当前日期不等于Monday时
学PHP需要研究数据结构和算法吗需要学习数据库结构
因为PHP涉及到对数据库的查询、插入、追加、删除等操作
所以必须学习数据库操作语句
关于算法这个东西很广义
你也需要学习一些常用的数据处理方式 , 也就是算法,PHP里一般叫自定义方法或自定义函数
同样的一个方法,老手可以用最短最简洁的几行代码实现,而新手则可能用十几行或几十行甚至上百行的代码才实现,这对于程序的运行速度和效率都有很大影响的,这个是算法的不同
我以上说的算法是狭义的PHP范围内的一部分意思
php有什么数据结构可以实现双向索引查询数组就是典型的数据结构php数据结构函数了,使用数组操作函数,就可以实现单向和多向队列了 。操作函数有php数据结构函数: array_shift array_unshift array_push array_pop

推荐阅读