php 函數(shù)在返回?cái)?shù)組類型的數(shù)據(jù)時(shí)可能會(huì)遇到以下情況:明確聲明返回?cái)?shù)組類型,則直接返回?cái)?shù)組;返回 null 值會(huì)引發(fā)錯(cuò)誤;調(diào)用接收數(shù)組的函數(shù)可返回另一個(gè)數(shù)組。
PHP 函數(shù)返回?cái)?shù)組類型的數(shù)據(jù)情況
PHP 中,函數(shù)在返回?cái)?shù)組類型的數(shù)據(jù)時(shí),通常會(huì)遇到以下情況:
1. 明確的數(shù)組類型提示
當(dāng)函數(shù)簽名明確聲明返回的數(shù)據(jù)類型為數(shù)組時(shí),函數(shù)將返回一個(gè)數(shù)組。例如:
function get_data(): array
{
return ['name' => 'John', 'age' => 30];
}
登錄后復(fù)制
2. 返回 null
某些函數(shù)可能返回 null 值,例如當(dāng)找不到所需數(shù)據(jù)時(shí)。然而,當(dāng)函數(shù)聲明為返回?cái)?shù)組類型時(shí),返回 null 會(huì)引發(fā)錯(cuò)誤。
3. 調(diào)用接收數(shù)組的函數(shù)
PHP 中還提供了一些函數(shù)(例如 array_filter() 和 array_map()),它們接收數(shù)組作為參數(shù)并返回另一個(gè)數(shù)組。以下示例顯示如何使用 array_filter() 函數(shù):
function filter_numbers(array $arr)
{
return array_filter($arr, function($item) {
return is_numeric($item);
});
}
$numbers = [1, 2, 'a', 4, 'b'];
$result = filter_numbers($numbers);
// $result 現(xiàn)在是一個(gè)僅包含數(shù)字的數(shù)組
登錄后復(fù)制
實(shí)戰(zhàn)案例:獲取文件列表
考慮一個(gè)獲取指定目錄中的文件列表的函數(shù):
function get_files(string $dir): array
{
if (!is_dir($dir)) {
throw new InvalidArgumentException("$dir is not a valid directory.");
}
$files = scandir($dir);
if ($files === false) {
throw new RuntimeException("Failed to scan directory.");
}
foreach ($files as $key => $file) {
if ($file == '.' || $file == '..') {
unset($files[$key]);
}
}
return array_values($files);
}
登錄后復(fù)制
這個(gè)函數(shù)返回一個(gè)包含目錄中文件名的數(shù)組。它會(huì)處理無效目錄、掃描目錄失敗以及去除當(dāng)前目錄和父目錄的引用。






