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

PHP array_values() 函數深度解析:重置陣列索引、提取所有值的實戰指南

     編輯:PHP 綜合知識

函數簡介

array_values() 是 PHP 內建陣列函數,用於返回陣列中所有的值,並以數字索引 (0 起始) 重新建立索引。這對於處理關聯陣列、移除原有字串鍵名、或需按順序遍歷值的場景極為實用。

語法與參數

array_values(array $array): array
  • $array (必需):輸入陣列,可為索引陣列或關聯陣列。
  • 回傳值:新陣列,包含原陣列所有值,索引自 0 開始連續遞增。

核心行為示意

$input = [
    'php'  => 'php code',
    'html' => 'html code',
    'css'  => 'css code',
    'js'   => 'js code',
];

$result = array_values($input);

/* 結果:
Array
(
    [0] => php code
    [1] => html code
    [2] => css code
    [3] => js code
)
*/

原有鍵名 php、html 等全部捨棄,值保持原順序 (PHP 7+ 保證關聯陣列插入順序)。

常見應用場景

1. 將關聯陣列轉為索引陣列供 json_encode 輸出陣列而非物件

$data = ['name' => 'John', 'age' => 25];
echo json_encode($data);        // {"name":"John","age":25} 物件
echo json_encode(array_values($data)); // ["John",25] 陣列

2. 重置 unset() 後的非連續索引

$arr = [10, 20, 30, 40];
unset($arr[1]); // [0=>10, 2=>30, 3=>40]
$arr = array_values($arr); // [0=>10, 1=>30, 2=>40]

3. 多維陣列僅重設第一層索引

$matrix = [
    'row1' => ['a', 'b'],
    'row2' => ['c', 'd'],
];
$rows = array_values($matrix); // 索引重設為 0,1;子陣列索引不變

注意事項與效能

  • 記憶體:會建立新陣列複製所有值,大型陣列需留意記憶體用量。
  • 遞迴限制:僅處理第一層。若需遞迴重設所有層級索引,需自行遞迴或使用 array_walk_recursive 配合參考傳遞。
  • PHP 版本:全版本支援,行為一致。

對比:array_values vs array_keys vs array_flip

函數用途回傳
array_values取所有值、重設數字索引索引陣列
array_keys取所有鍵名索引陣列
array_flip交換鍵值 (值必須唯一且為 int/string)關聯陣列

結語

array_values() 是 PHP 陣列處理的基石函數之一,掌握其「捨棄鍵名、保留值順序、重設索引」的特性,能輕鬆解決 JSON 輸出格式控制、陣列清理、索引重組等高頻需求。記住:它永遠回傳新陣列,不會修改原陣列。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved