PHP Arrays
Arrays are one of the most important data structures in PHP.
An array allows us to store multiple values inside a single variable.
Without arrays, many applications would be nearly impossible to build.
Why Arrays Matter
Arrays are used everywhere:
✅ Online Players
✅ Configuration Files
✅ Database Results
✅ JSON Responses
✅ APIs
✅ Inventories
✅ Permissions
✅ Caches
✅ Network Packets
✅ PocketMine Plugins
Example
Instead of:
$player1 = "Steve";
$player2 = "Alex";
$player3 = "Aayan";
We can use:
$players = [
"Steve",
"Alex",
"Aayan"
];
Memory Representation
players
│
├── [0] → Steve
├── [1] → Alex
└── [2] → Aayan
Types of Arrays
PHP supports:
- Indexed Arrays
- Associative Arrays
- Multidimensional Arrays
Indexed Arrays
Indexed arrays use numeric indexes.
Creating Arrays
$players = [
"Steve",
"Alex",
"Aayan"
];
Accessing Elements
echo $players[0];
Output:
Steve
echo $players[2];
Output:
Aayan
Adding Elements
$players[] = "Notch";
Equivalent:
$players[3] = "Notch";
Modifying Elements
$players[1] = "Herobrine";
Removing Elements
unset(
$players[1]
);
Associative Arrays
Associative arrays use keys.
Example
$player = [
"name" => "Aayan",
"coins" => 5000,
"rank" => "VIP"
];
Accessing Values
echo $player["name"];
Output:
Aayan
echo $player["coins"];
Memory Representation
player
│
├── name → Aayan
├── coins → 5000
└── rank → VIP
Modifying Values
$player["coins"] = 10000;
Adding Values
$player["kills"] = 150;
Multidimensional Arrays
Arrays inside arrays.
Example
$players = [
[
"name" => "Steve",
"coins" => 100
],
[
"name" => "Alex",
"coins" => 500
]
];
Accessing
echo $players[0]["name"];
Output:
Steve
Real World Example
Database results:
$users = [
[
"id" => 1,
"name" => "Aayan"
],
[
"id" => 2,
"name" => "Steve"
]
];
Creating Arrays
array()
$data = array(
1,
2,
3
);
Short Syntax
$data = [
1,
2,
3
];
Recommended.
Array Functions
PHP provides hundreds of array functions.
Count Elements
count()
echo count(
$players
);
sizeof()
Alias of count.
Check Existence
isset()
isset(
$player["name"]
);
array_key_exists()
array_key_exists(
"name",
$player
);
Search Arrays
in_array()
in_array(
"Steve",
$players
);
array_search()
array_search(
"Steve",
$players
);
Returns index.
Add Elements
array_push()
array_push(
$players,
"Notch"
);
Better:
$players[] = "Notch";
Remove Elements
array_pop()
Removes last element.
array_shift()
Removes first element.
array_unshift()
Adds to beginning.
Merge Arrays
array_merge()
$result =
array_merge(
$a,
$b
);
Spread Operator
PHP 7.4+
$data = [
...$a,
...$b
];
Unique Values
array_unique(
$players
);
Reverse Arrays
array_reverse(
$players
);
Slice Arrays
array_slice(
$players,
0,
2
);
Remove Section
array_splice(
$players,
1,
2
);
Sorting Arrays
sort()
Ascending.
sort(
$numbers
);
rsort()
Descending.
asort()
Associative ascending.
arsort()
Associative descending.
ksort()
Sort by keys.
krsort()
Reverse key sort.
Custom Sorting
usort(
$players,
function (
$a,
$b
) {
return
$a["coins"]
<=>
$b["coins"];
}
);
Array Mapping
array_map()
$numbers =
array_map(
fn($n) => $n * 2,
[1,2,3]
);
Output:
[2,4,6]
Array Filtering
array_filter()
$numbers =
array_filter(
[1,2,3,4],
fn($n)
=> $n % 2 === 0
);
Output:
[2,4]
Array Reduction
array_reduce()
$total =
array_reduce(
[1,2,3],
fn($c, $n)
=> $c + $n,
0
);
Output:
6
Getting Keys
array_keys(
$player
);
Getting Values
array_values(
$player
);
Flip Keys and Values
array_flip(
$array
);
Combine Arrays
array_combine(
$keys,
$values
);
Chunk Arrays
array_chunk(
$players,
10
);
Useful for pagination.
Walk Arrays
array_walk(
$players,
function (
$value
) {
echo $value;
}
);
Destructuring Arrays
PHP 7+
[
$name,
$rank
] = [
"Aayan",
"VIP"
];
Associative Destructuring
[
"name" => $name,
"rank" => $rank
] = $player;
Nested Arrays
$config = [
"database" => [
"host" => "127.0.0.1",
"port" => 3306
]
];
Access:
$config
["database"]
["host"];
JSON and Arrays
$json =
json_encode(
$array
);
$data =
json_decode(
$json,
true
);
Array Performance
PHP arrays are extremely powerful but consume memory.
Internal Structure
PHP arrays are implemented as:
Ordered Hash Tables
This makes lookups very fast.
Complexity
| Operation | Complexity |
|---|---|
| Lookup | O(1) |
| Insert | O(1) |
| Search | O(n) |
| Sort | O(n log n) |
Real World PocketMine Examples
Online Players
$players =
$this
->getServer()
->getOnlinePlayers();
Config Data
$data =
$config
->getAll();
Cache System
private array
$cache = [];
Economy Storage
private array
$money = [];
Permissions
private array
$permissions = [
"admin" => [
"*"
]
];
Scoreboards
private array
$scoreboards = [];
Packet Data
$data = [
"x" => 100,
"y" => 64,
"z" => 100
];
Common Mistakes
Accessing Missing Keys
❌
echo
$player["money"];
Produces:
Undefined array key
Better:
$money =
$player["money"]
?? 0;
Modifying During foreach
❌
foreach (
$players as $player
) {
unset(
$players[0]
);
}
Deep Nesting
Avoid:
$data
["a"]
["b"]
["c"]
["d"];
Use objects when possible.
Best Practices
✅ Use descriptive keys.
✅ Prefer:
??
for missing values.
✅ Use array_map and array_filter.
✅ Avoid unnecessary nesting.
✅ Type your properties.
private array
$players = [];
Mini Project
Create:
$player = [
"name" => "Aayan",
"rank" => "VIP",
"coins" => 1000,
"kills" => 50
];
Display all information.
Exercises
Exercise 1
Create indexed array.
Exercise 2
Create associative array.
Exercise 3
Sort player coins.
Exercise 4
Filter even numbers.
Exercise 5
Use array_map to double values.
Challenge
Create an economy storage:
$players = [
"Aayan" => [
"money" => 5000,
"rank" => "VIP"
],
"Steve" => [
"money" => 1000,
"rank" => "Player"
]
];
Implement:
addMoney()
removeMoney()
setRank()
Quiz
Which function counts elements?
Answer
count()
Which function filters arrays?
Answer
array_filter()
Which function transforms arrays?
Answer
array_map()
Which operator safely gets values?
Answer
??
References
PHP Arrays:
https://www.php.net/manual/en/language.types.array.php
Array Functions:
https://www.php.net/manual/en/ref.array.php
Next Chapter
➡ PHP Superglobals