首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 陣列合併、切片、差集操作函數大全:array_merge、array_slice、array_diff 等詳解

     編輯:PHP 綜合知識

陣列合併

1. array_combine() — 鍵值配對建立新陣列

$keys = ['green', 'red', 'yellow'];
$values = ['avocado', 'apple', 'banana'];
$combined = array_combine($keys, $values);
// ['green'=>'avocado', 'red'=>'apple', 'yellow'=>'banana']

兩陣列長度必須相等,否則回傳 false 並觸發警告。

2. array_merge() — 簡單合併(字串鍵後覆蓋前,數字鍵重新索引)

$a = ['color' => 'red', 2, 4];
$b = ['a', 'b', 'color' => 'green', 'shape' => 'trapezoid', 4];
$merged = array_merge($a, $b);
/*
[
  'color' => 'green',  // 字串鍵覆蓋
  0 => 2,              // 數字鍵 0
  1 => 4,              // 數字鍵 1
  2 => 'a',            // 重新索引 0->2
  3 => 'b',            // 重新索引 1->3
  'shape' => 'trapezoid',
  4 => 4               // 重新索引
]
*/

3. array_merge_recursive() — 遞迴合併(相同字串鍵值轉為陣列)

$ar1 = ['color' => ['favorite' => 'red'], 5];
$ar2 = [10, 'color' => ['favorite' => 'green', 'blue']];
$merged = array_merge_recursive($ar1, $ar2);
/*
[
  'color' => ['favorite' => ['red', 'green'], 0 => 'blue'],
  0 => 5,
  1 => 10
]
*/

陣列切片與剪接

4. array_slice() — 取出片段(不修改原陣列)

$input = ['a', 'b', 'c', 'd', 'e'];
array_slice($input, 2);        // ['c','d','e'] 從索引 2 到結尾
array_slice($input, -2, 1);    // ['d'] 倒數第 2 取 1 個
array_slice($input, 0, 3);     // ['a','b','c'] 從頭取 3 個
array_slice($input, 2, -1);    // ['c','d'] 從索引 2 到倒數第 1 (不含)
array_slice($input, 2, -1, true); // 保留鍵 ['2'=>'c','3'=>'d']

5. array_splice() — 移除並選擇性替換(修改原陣列)

$input = ['red', 'green', 'blue', 'yellow'];
array_splice($input, 2);              // 移除索引 2 之後 => ['red','green']
array_splice($input, 1, -1);          // 移除索引 1 到倒數第 1 => ['red','yellow']
array_splice($input, 1, count($input), 'orange'); // 索引 1 開始全換 => ['red','orange']
array_splice($input, -1, 1, ['black','maroon']);  // 最後一個換成兩個
array_splice($input, 3, 0, 'purple'); // 索引 3 插入 (不移除)

陣列差集與交集

6. array_intersect() — 交集(比較值,保留第一個陣列鍵)

$a = ['a'=>'green', 'red', 'blue'];
$b = ['b'=>'green', 'yellow', 'red'];
array_intersect($a, $b); // ['a'=>'green', 0=>'red']

7. array_intersect_assoc() — 交集(比較鍵+值)

$a = ['a'=>'green', 'b'=>'brown', 'c'=>'blue', 'red'];
$b = ['a'=>'green', 'yellow', 'red'];
array_intersect_assoc($a, $b); // ['a'=>'green']

8. array_diff() — 差集(第一個陣列有、其它沒有的值)

$a = ['a'=>'green', 'red', 'blue', 'red'];
$b = ['b'=>'green', 'yellow', 'red'];
array_diff($a, $b); // [1=>'blue'] (數字鍵 1 保留)

9. array_diff_assoc() — 差集(比較鍵+值)

$a = ['a'=>'green', 'b'=>'brown', 'c'=>'blue', 'red'];
$b = ['a'=>'green', 'yellow', 'red'];
array_diff_assoc($a, $b); // ['b'=>'brown', 'c'=>'blue', 0=>'red']

選擇指南

需求推薦函數注意
兩陣列鍵值配對array_combine長度必須相等
簡單合併,數字鍵重新索引array_merge字串鍵後覆蓋前
合併保留相同鍵所有值array_merge_recursive值變陣列
取出子陣列不修改原陣列array_slice第四參數 true 保留鍵
移除/替換/插入修改原陣列array_splice回傳被移除部分
找共同值array_intersect只比值
找共同鍵值對array_intersect_assoc鍵值都要同
找差異值array_diff只比值
找差異鍵值對array_diff_assoc鍵值都要同
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved