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

PHP 實用陣列函數:刪除空值元素與二維陣列轉 HashMap

     編輯:PHP 綜合知識

函數一:array_remove_empty —— 遞歸刪除空白元素

針對多維陣列,遞歸移除值為空字串或僅含空白字元的元素,可選擇是否對保留值執行 trim()。

原始碼

function array_remove_empty(&$arr, $trim = true) {
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            array_remove_empty($arr[$key], $trim);
        } else {
            $value = trim($value);
            if ($value === '') {
                unset($arr[$key]);
            } elseif ($trim) {
                $arr[$key] = $value;
            }
        }
    }
}

使用場景

  • 清理表單提交資料中的空白欄位
  • 預處理 API 回傳的巢狀資料結構
  • 資料入庫前的標準化清洗

函數二:array_to_hashmap —— 二維陣列轉關聯陣列

將索引陣列轉為以指定欄位為鍵的關聯陣列,支援僅取單一欄位值或保留整行資料。

原始碼

function array_to_hashmap(&$arr, $keyField, $valueField = null) {
    $ret = [];
    if ($valueField) {
        foreach ($arr as $row) {
            $ret[$row[$keyField]] = $row[$valueField];
        }
    } else {
        foreach ($arr as $row) {
            $ret[$row[$keyField]] = $row;
        }
    }
    return $ret;
}

使用範例

$users = [
    ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
    ['id' => 2, 'name' => 'Bob',   'email' => 'bob@example.com'],
];

// 以 id 為鍵,保留整行
$map = array_to_hashmap($users, 'id');
// 結果:[1 => [...], 2 => [...]]

// 以 id 為鍵,僅取 name
$nameMap = array_to_hashmap($users, 'id', 'name');
// 結果:[1 => 'Alice', 2 => 'Bob']

進階應用技巧

結合使用:清理後再轉換

$rawData = [
    ['id' => 1, 'name' => '  Alice  ', 'status' => ''],
    ['id' => 2, 'name' => 'Bob',     'status' => 'active'],
];

array_remove_empty($rawData);          // 移除 status 空值,trim name
$cleanMap = array_to_hashmap($rawData, 'id', 'name');
// 結果:[1 => 'Alice', 2 => 'Bob']

效能提示

  • 傳址參考 &$arr 避免大陣列複製開銷
  • 若資料量極大,考慮使用生成器 yield 分批處理
  • 轉換前建議先用 array_column() (PHP 5.5+) 取得鍵名陣列檢查重複
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved