<?php
// 短語法 (PHP 5.4+)
$numbers = [1, 3, 5, 7, 9];
$colors = ['red', 'blue', 'green'];
// 自定義鍵值
$language = [
1 => 'English',
3 => 'Chinese',
5 => 'French',
];
// 多維數組
$twoDim = [
'color' => ['red', 'blue'],
'week' => ['Monday', 'Friday'],
];
// 空數組
$result = [];
<?php
$number = '1,3,5,7,9';
$string = "I'm PHPer";
$array = ['And', 'You?'];
$newArray = compact('number', 'string', 'array');
// 結果:['number' => '1,3,5,7,9', 'string' => "I'm PHPer", 'array' => ['And', 'You?']]
// 反向操作:extract()
extract($newArray);
// 現在擁有 $number, $string, $array 三個變量
<?php
$keys = ['1', '3', '5', '7', '9'];
$values = ['I', 'Am', 'A', 'PHP', 'er'];
$combined = array_combine($keys, $values);
// 結果:['1' => 'I', '3' => 'Am', '5' => 'A', '7' => 'PHP', '9' => 'er']
<?php
range(0, 100, 10); // [0, 10, 20, ..., 100] 步進 10
range('A', 'Z'); // ['A', 'B', ..., 'Z']
range('z', 'a'); // ['z', 'y', ..., 'a'] 支援倒序
<?php
// 填充值
array_fill(0, 5, ['a', 'b', 'c', 'd']);
// 5 個元素,每個都是 ['a','b','c','d']
// 指定鍵名填充
$keys = ['string', '2', 9, 'SDK', 'PK'];
array_fill_keys($keys, 'testing');
// ['string' => 'testing', '2' => 'testing', ...]
<?php
$speed = [50, 120, 180, 240, 380];
// 僅值
foreach ($speed as $value) { ... }
// 鍵值對
foreach ($speed as $key => $value) {
echo "$key => $value\n";
}
// 修改原值(引用)
foreach ($speed as &$value) {
$value *= 2;
}
unset($value); // 釋放引用
<?php
$staff = [
['姓名', '性別', '年齡'],
['小張', '男', 24],
['小王', '女', 25],
];
while (list($key, $value) = each($staff)) {
list($name, $sex, $age) = $value;
echo "$name\t$sex\t$age\n";
}
<?php
$speed = range(0, 220, 20);
$count = count($speed);
for ($i = 0; $i < $count; $i++) {
echo $speed[$i] . ' ';
}
// 輸出:0 20 40 60 80 100 120 140 160 180 200 220
| 需求 | 推薦函數 | 示例 |
|---|---|---|
| 只遍歷值 | array_walk() | array_walk($arr, fn($v) => ...) |
| 遍歷並轉換 | array_map() | array_map(fn($v) => $v*2, $arr) |
| 過濾元素 | array_filter() | array_filter($arr, fn($v) => $v > 100) |
| 歸約計算 | array_reduce() | array_reduce($arr, fn($c,$v) => $c+$v, 0) |
| 鍵值同時操作 | array_walk() / foreach | 需修改鍵時用 foreach |
<?php
$unique = array_unique([1, 2, 2, 3, 3, 3]); // [1, 2, 3]
// 保持鍵名不變,如需重新索引:
$reindexed = array_values(array_unique($arr));
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
$a + $b; // 聯合:['a'=>1, 'b'=>2, 'c'=>4] (左優先)
array_merge($a, $b); // 合併:['a'=>1, 'b'=>3, 'c'=>4] (右覆蓋,數值鍵重新索引)
array_diff($a, $b); // 差集:['a' => 1] (值不同)
array_intersect($a,$b); // 交集:['b' => 2] (鍵值皆同)
<?php
$users = [
['name' => '張三', 'age' => 25],
['name' => '李四', 'age' => 20],
['name' => '王五', 'age' => 30],
];
// 按年齡升序
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
// 多字段排序:先按年齡升序,同齡按姓名降序
usort($users, fn($a, $b) =>
[$a['age'], -strcmp($a['name'], 'z')] <=> [$b['age'], -strcmp($b['name'], 'z')]
);
<?php
$nested = [[1, 2], [3, [4, 5]], 6];
// 遞歸扁平化
function flatten(array $arr): array {
$result = [];
array_walk_recursive($arr, fn($v) => $result[] = $v);
return $result;
}
flatten($nested); // [1, 2, 3, 4, 5, 6]
$arr = []; $arr[10000] = null; unset($arr[10000]); 預留空間$len = count($arr)foreach ($arr as &$v) 避免複製,用畢 unset($v)array 類型聲明獲取靜態分析優化掌握這些核心操作,PHP 數組處理將得心應手!