Skip to main content

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:

  1. Indexed Arrays
  2. Associative Arrays
  3. 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(
"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

OperationComplexity
LookupO(1)
InsertO(1)
SearchO(n)
SortO(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