PHP Array

Array function reference: mutation, search, transform, aggregate, sort.

Intermediate
Key PointsPHP ships 80+ array functions; fewer than 30 see daily use.

Add and remove

FunctionEffectReturns
array_push尾部追加一个或多个新长度
array_pop弹出尾部被弹出的值
array_unshift头部插入新长度
array_shift弹出头部被弹出的值
array_splice删除并替换一段被删除的部分
array_slice截取一段(不改原数组)新数组
unset删除指定键(不重排)无
PHP
<?php
$arr = [3 => "c", 1 => "a", 2 => "b"];

echo count($arr), "\n";
echo array_sum([1, 2, 3]), "\n";

print_r(array_flip(["a", "b"]));
print_r(array_slice($arr, 1, 2, true));
print_r(array_diff([1, 2, 3], [2]));
print_r(array_intersect([1, 2, 3], [2, 3, 4]));
print_r(array_combine(["a", "b"], [1, 2]));

echo implode(",", array_keys($arr)), "\n";
Output
3
6
Array
(
    [a] => 0
    [b] => 1
)
Array
(
    [1] => a
    [2] => b
)
Array
(
    [0] => 1
    [2] => 3
)
Array
(
    [1] => 2
    [2] => 3
)
Array
(
    [a] => 1
    [b] => 2
)
3,1,2

Search and test

FunctionPurposeNote
in_array值是否存在第三个参数 true 才严格
array_search查值返回键找不到返回 false,键可能是 0
array_key_exists键是否存在值为 null 也算存在
isset键存在且不为 null更快
array_keys所有键可带筛选值
array_values所有值并重排键修 unset 留下的空洞
PHP
<?php
$arr = ["a" => 1, "b" => null, "c" => 0];

var_dump(in_array("1", [1, 2], true));
var_dump(in_array("1", [1, 2]));

var_dump(array_search(2, [1, 2, 3]));
var_dump(array_search("x", [1, 2, 3]));

var_dump(array_key_exists("b", $arr));
var_dump(isset($arr["b"]));
Output
bool(false)
bool(true)
int(1)
bool(false)
bool(true)
bool(false)
in_array compares loosely by default. **Always pass true for permission and allowlist checks** or 0, "0" and false collapse into each other.

Transform and aggregate

PHP
<?php
$nums = [1, 2, 3, 4, 5];

print_r(array_map(fn($n) => $n * 2, $nums));
print_r(array_filter($nums, fn($n) => $n % 2 === 1));
print_r(array_values(array_filter($nums, fn($n) => $n % 2 === 1)));

echo array_reduce($nums, fn($c, $n) => $c + $n, 0), "\n";
echo array_sum($nums), "\n";
echo array_product([2, 3, 4]), "\n";

print_r(array_unique([1, 2, 2, 3, 3, 3]));
print_r(array_chunk($nums, 2));
Output
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)
Array
(
    [0] => 1
    [1] => 3
    [2] => 5
)
15
15
24
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
        )

    [2] => Array
        (
            [0] => 5
        )

)

array_filter and single-array array_map preserve keys. Only array_values reindexes — so wrap filter results before sending to a client.

Multidimensional helpers

PHP
<?php
$rows = [
    ["id" => 2, "name" => "Amy"],
    ["id" => 1, "name" => "Tom"],
];

print_r(array_column($rows, "name"));
print_r(array_column($rows, null, "id"));

$merged = array_merge_recursive(["a" => [1]], ["a" => [2]]);
print_r($merged);

usort($rows, fn($a, $b) => $a["id"] <=> $b["id"]);
print_r(array_column($rows, "name"));
Output
Array
(
    [0] => Amy
    [1] => Tom
)
Array
(
    [2] => Array
        (
            [id] => 2
            [name] => Amy
        )

    [1] => Array
        (
            [id] => 1
            [name] => Tom
        )

)
Array
(
    [a] => Array
        (
            [0] => 1
            [1] => 2
        )

)
Array
(
    [0] => Tom
    [1] => Amy
)
array_merge overwrites string keys; array_merge_recursive collects them into arrays. Use the former for config, the latter for gathering.

Friends & Partners