Arrays
Also Known As
dynamic array
fixed array
ArrayList
contiguous memory
TL;DR
The most fundamental data structure — a contiguous block of memory holding elements of the same type, offering O(1) index access but O(n) insertion and deletion in the middle.
Explanation
True arrays (C-style) store elements contiguously in memory — index access is O(1) because element address = base + (index × element_size). PHP arrays are actually ordered hash maps, not true arrays, which is why they support mixed keys and O(1) key lookup. Dynamic arrays (ArrayList, Python list) resize by doubling capacity when full — amortised O(1) append. Understanding the difference explains why array_push() is fast but array_unshift() is O(n), and why a PHP array with integer keys 0..n behaves differently from one with gaps.
Common Misconception
✗ PHP arrays are arrays — PHP arrays are ordered hash maps; they support integer and string keys, maintain insertion order, and have O(1) key lookup, which is very different from a C-style contiguous array.
Why It Matters
Understanding array memory layout explains why array_shift() is O(n) (reindexes everything) while array_pop() is O(1) (removes last element), and why SplFixedArray uses less memory than a PHP array for numeric data.
Common Mistakes
- array_unshift() in a loop — O(n) reindex on every call; use a queue or prepend to a linked list.
- Using PHP arrays for large numeric datasets — SplFixedArray uses ~60% less memory for integer-keyed arrays.
- Assuming count() is O(1) — it is in PHP (cached), but in other languages it may traverse the structure.
- Copying large arrays by value — PHP arrays are copy-on-write, but explicit assignment in loops still causes copies.
Code Examples
✗ Vulnerable
// O(n²) — array_unshift in a loop reindexes entire array each time:
$result = [];
foreach ($items as $item) {
array_unshift($result, $item); // O(n) reindex — loop becomes O(n²)
}
✓ Fixed
// O(n) — append then reverse once:
$result = [];
foreach ($items as $item) {
$result[] = $item; // O(1) append
}
$result = array_reverse($result); // O(n) once at end
// Or use SplStack / SplDoublyLinkedList for O(1) prepend:
$stack = new SplStack();
foreach ($items as $item) $stack->push($item);
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
15 Mar 2026
Edited
22 Mar 2026
Views
31
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
No pings yesterday
Amazonbot 13
Perplexity 7
Unknown AI 3
Google 2
Ahrefs 1
Also referenced
How they use it
crawler 24
crawler_json 1
pre-tracking 1
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Low
⚡ Quick Fix
PHP arrays are ordered hash maps — use SplFixedArray when you need a true fixed-size numeric array with lower memory overhead for large datasets
📦 Applies To
PHP 5.0+
web
cli
queue-worker
🔗 Prerequisites
🔍 Detection Hints
foreach over large numeric array where SplFixedArray would use less memory; array_shift O(n) when dequeue needed
Auto-detectable:
✗ No
blackfire
php-meminfo
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: High
✗ Manual fix
Fix: Low
Context: Function