Z
ZHANK
字符串与数组

数组函数

array_push/pop/shift、sort、array_filter/map/reduce、in_array

数组函数

PHP 的数组函数极其丰富——排序、过滤、映射、归约都有内置函数,很少需要手写循环。

学完本章你将: 掌握 array_push/pop、sort、array_filter/map/reduce、in_array。


增删操作

php
<?php
$arr = [1, 2, 3];

// 尾部操作
array_push($arr, 4, 5);    // [1,2,3,4,5]
$last = array_pop($arr);   // 5, arr = [1,2,3,4]

// 头部操作
array_unshift($arr, 0);    // [0,1,2,3,4]
$first = array_shift($arr);// 0, arr = [1,2,3,4]

排序

php
<?php
$nums = [3, 1, 4, 1, 5];
sort($nums);            // [1,1,3,4,5](升序,索引重排)
rsort($nums);           // [5,4,3,1,1](降序)

$assoc = ["b" => 2, "a" => 1];
asort($assoc);          // 按值升序,保留键
ksort($assoc);          // 按键升序

过滤、映射、归约

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

// 过滤
$even = array_filter($nums, fn($n) => $n % 2 === 0);
// [1=>2, 3=>4, 5=>6](保留原键)
$even = array_values($even);  // [2,4,6](重置索引)

// 映射
$doubled = array_map(fn($n) => $n * 2, $nums);
// [2,4,6,8,10,12]

// 归约
$sum = array_reduce($nums, fn($carry, $n) => $carry + $n, 0);
// 21

查找与判断

php
<?php
in_array(3, $nums);                    // true(是否存在值)
array_key_exists("name", $user);       // true(是否存在键)
array_search(3, $nums);                // 返回键名,找不到返回 false

$keys = array_keys($user);             // ["name", "age", "city"]
$values = array_values($user);         // ["小明", 25, "北京"]
$count = count($arr);                  // 元素个数