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