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

PHP 實用陣列工具函數:除錯輸出、移除空值、分組分頁

     編輯:PHP 綜合知識

1. 除錯輸出 dump()

支援 HTML/CLI 環境自動切換,可選擇回傳字串而非直接輸出。

function dump($vars, $label = '', $return = false) {
    if (ini_get('html_errors')) {
        $out = "<pre>\n";
        if ($label) $out .= "<strong>$label :</strong>\n";
        $out .= htmlspecialchars(print_r($vars, true));
        $out .= "\n</pre>\n";
    } else {
        $out = $label . " :\n" . print_r($vars, true);
    }
    if ($return) return $out;
    echo $out;
    return null;
}

// 用法
dump($_POST, 'POST Data');
$log = dump($bigArray, 'Debug', true); // 寫入日誌檔
file_put_contents('debug.log', $log, FILE_APPEND);

2. 遞迴移除空值 array_remove_empty()

預設同時 trim() 非空字串,可關閉。

function array_remove_empty(array &$arr, $trim = true) {
    foreach ($arr as $key => &$val) {
        if (is_array($val)) {
            array_remove_empty($val, $trim);
            if (empty($val)) unset($arr[$key]); // 遞迴後若成空陣列也移除
        } else {
            $val = trim($val);
            if ($val === '') {
                unset($arr[$key]);
            } elseif ($trim) {
                $arr[$key] = $val;
            }
        }
    }
}

// 用法
$data = ['a' => '  ', 'b' => 'val', 'c' => ['x' => '', 'y' => '  ok  ']];
array_remove_empty($data);
// 結果:['b' => 'val', 'c' => ['y' => 'ok']]

3. 陣列分組 array_chunk() (內建)

$items = range(1, 21);          // 1~20
$pages = array_chunk($items, 5); // 每 5 個一組
/* 結果:
[
    [1,2,3,4,5],
    [6,7,8,9,10],
    [11,12,13,14,15],
    [16,17,18,19,20]
]
*/

// 分頁顯示
$page = isset($_GET['p']) ? max(1, (int)$_GET['p']) : 1;
$perPage = 5;
$paged = $pages[$page - 1] ?? [];

進階:鍵值保持分組 array_chunk_assoc()

function array_chunk_assoc(array $arr, $size, $preserveKeys = true) {
    $chunks = [];
    $i = 0;
    foreach ($arr as $k => $v) {
        $chunks[floor($i / $size)][$k] = $v;
        $i++;
    }
    return $chunks;
}

常見陣列操作速查

需求函式/寫法
過濾空值/false/0array_filter($arr) / array_filter($arr, 'strlen')
重新索引 (0..n)array_values($arr)
鍵名轉小寫array_change_key_case($arr, CASE_LOWER)
陣列差集 (鍵/值)array_diff_key / array_diff_assoc
合併同鍵覆蓋array_merge (數值鍵重排) / $a + $b (保留左側鍵)
隨機取樣array_rand($arr, $n) 回傳鍵 / array_intersect_key($arr, array_flip(array_rand($arr, $n))) 取值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved