php实现数据结构
PHP 实现数据结构的方法
PHP 作为一门动态类型语言,虽然不像 C++ 或 Java 那样内置丰富的数据结构库,但可以通过数组、对象和标准库(如 SPL)实现常见数据结构。以下是几种典型数据结构的实现方式:
数组实现基础结构
PHP 的关联数组和索引数组可以灵活模拟多种结构:
- 栈:使用
array_push()和array_pop()$stack = []; array_push($stack, 'a'); // 入栈 $item = array_pop($stack); // 出栈 - 队列:结合
array_push()和array_shift()$queue = []; array_push($queue, 'a'); // 入队 $item = array_shift($queue); // 出队
SPL 标准库
PHP 的 SPL(Standard PHP Library)提供内置数据结构类:
-
SplStack 和 SplQueue:

$stack = new SplStack(); $stack->push('a'); $stack->pop(); $queue = new SplQueue(); $queue->enqueue('a'); $queue->dequeue(); -
SplHeap(堆):
class MaxHeap extends SplMaxHeap { protected function compare($a, $b) { return $a - $b; } } $heap = new MaxHeap(); $heap->insert(10);
链表实现
通过对象模拟链表节点:

class ListNode {
public $data;
public $next;
public function __construct($data) {
$this->data = $data;
$this->next = null;
}
}
$node1 = new ListNode(1);
$node2 = new ListNode(2);
$node1->next = $node2; // 构建链接
哈希表(字典)
PHP 的关联数组本质上是哈希表:
$hashMap = ['key1' => 'value1', 'key2' => 'value2'];
$hashMap['key3'] = 'value3'; // 插入
unset($hashMap['key1']); // 删除
树结构
用类和递归实现二叉树:
class TreeNode {
public $value;
public $left;
public $right;
public function __construct($value) {
$this->value = $value;
$this->left = null;
$this->right = null;
}
}
$root = new TreeNode(1);
$root->left = new TreeNode(2);
$root->right = new TreeNode(3);
图结构
使用邻接表表示图:
$graph = [
'A' => ['B', 'C'],
'B' => ['A', 'D'],
'C' => ['A', 'D'],
'D' => ['B', 'C']
];
注意事项
- 性能敏感场景建议使用 SPL,其底层由 C 实现效率更高;
- 复杂结构(如红黑树)需自行实现或引入第三方库(如
php-ds扩展); - PHP 8+ 对对象和数组操作有进一步优化。






