trim() 僅能處理單個字符串,面對多維關聯數組時無法直接應用。需遍歷遞歸處理每個元素。
array_map + 遞歸<?php
function TrimArray($input) {
if (!is_array($input)) {
return trim($input); // 基線條件:字符串直接 trim
}
// 遞歸映射:對數組每個值應用自身
return array_map('TrimArray', $input);
}
// 測試數據
$dirty = [
'Key1' => ' Value 1 ',
'Key2' => ' Value 2 ',
'Key3' => [
' Child Item 1 ',
' Child Item 2'
]
];
$clean = TrimArray($dirty);
var_dump($clean);
/* 輸出:
array(3) {
["Key1"]=> string(7) "Value 1"
["Key2"]=> string(7) "Value 2"
["Key3"]=> array(2) {
[0]=> string(18) "Child Item 1"
[1]=> string(18) "Child Item 2"
}
}
*/
?>
while + each)<?php
// 不推薦:each() 在 PHP 7.2+ 棄用,PHP 8.0 移除
function TrimArray_old($arr) {
if (!is_array($arr)) return $arr;
while (list($key, $value) = each($arr)) {
if (is_array($value)) {
$arr[$key] = TrimArray_old($value);
} else {
$arr[$key] = trim($value);
}
}
return $arr;
}
?>
array_map 內建遍歷,性能優於手動循環。