PHP | file 函數

怎樣讀取文件到數組中

最近更新時間 2021-01-03 20:33:18

file 函數把整個文件讀入一個數組中。

file() 函數會把讀取的文件放到數組中,默認情況下數組中的一行對應數組中的一個元素。讀取失敗時返回 false。

函數定義

file ( string $filename [, int $flags = 0 [, resource $context ]] ) : array
// 源文件位於:ext/standard/file.c
# 函數定義

PHP_FUNCTION(file)
{
  ...
  if (flags < 0 || flags > (PHP_FILE_USE_INCLUDE_PATH | PHP_FILE_IGNORE_NEW_LINES | PHP_FILE_SKIP_EMPTY_LINES | PHP_FILE_NO_DEFAULT_CONTEXT)) {
    zend_argument_value_error(2, "must be a valid flag value");
    RETURN_THROWS();
  }

  use_include_path = flags & PHP_FILE_USE_INCLUDE_PATH;
  include_new_line = !(flags & PHP_FILE_IGNORE_NEW_LINES);
  skip_blank_lines = flags & PHP_FILE_SKIP_EMPTY_LINES;

  context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT);

  stream = php_stream_open_wrapper_ex(filename, "rb", (use_include_path ? USE_PATH : 0) | REPORT_ERRORS, NULL, context);
  if (!stream) {
    RETURN_FALSE;
  }
  ...
  php_stream_close(stream);
}

參數

  • checkfilename - 文件的路徑。
  • checkflags - 可選參數,flags 可以是以下一個或多個常量:
    • FILE_USE_INCLUDE_PATH 在 include_path 中查找文件。
    • FILE_IGNORE_NEW_LINES 在數組每個元素的末尾不要添加換行符。
    • FILE_SKIP_EMPTY_LINES 跳過空行。
  • checkcontext - 可選參數。

返回值

  • checkarray - 成功時返回數組,失敗時返回 false。

示例1: - 使用 file() 函數讀取文件到數組中。

<?php
/**
 * PHP 使用 file() 函數讀取文件到數組中。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 文件路徑
$filename = 'foo.txt';

// 讀取文件
$lines = file($filename);

// 跳過空行
// $lines = file($filename, FILE_SKIP_EMPTY_LINES);

print_r($lines);
Array
(
    [0] => 中
    [1] => 文
    [2] => Foo
)
rss_feed