【问题标题】:Php - Reading file lines into an arrayPhp - 将文件行读入数组
【发布时间】:2019-09-23 22:29:25
【问题描述】:

我文件中的数字是 5X5:

13456
23789
14789
09678
45678

我正在尝试将其放入此表单中

array[0]{13456}
array[1]{23789}
array[2]{14789}
array[3]{09678}
array[4]{45678}

我的代码是:

$fileName = $_FILES['file']['tmp_name'];
  //Throw an error message if the file could not be open
  $file = fopen($fileName,"r") or exit("Unable to open file!");

  while ($line = fgets($file)) {
      $digits .= trim($line);
     $members = explode("\n", str_replace(array("\r\n","\n\r","\r"),"\n",$digits));
      echo $members;

我得到的输出是这样的:

ArrayArrayArrayArrayArray

【问题讨论】:

    标签: php html algorithm file


    【解决方案1】:

    fgets 从文件指针中获取一行,所以理论上$line 中不应该有"\r""\n" 字符。 explode 仍然有效,即使没有找到分隔符。你最终会得到一个包含一个项目的数组,整个字符串。但是,您不能回显数组。 (这就是为什么您在每一行都看到 Array 的原因;当您在数组上使用 echo 时,这是 PHP 可以做的最好的事情。)

    如果我是你,我宁愿只使用file()

    $members = array_map('trim', file($fileName, FILE_IGNORE_NEW_LINES));
    

    使用您展示的示例文件,这应该会导致

    $members = ['13456', '23789', '14789', '09678', '45678'];
    

    【讨论】:

    • 我应该在我的while循环中添加这行代码吗?
    • 不,该行应该替换文件名值定义后的所有代码。无需循环
    • 如何调用 $member 函数使数组中的字符串可以是整数?
    • 您可以使用 intval,但通常没有必要。如果在数字上下文中使用,PHP 会自动将数字字符串转换为数字。
    • 抱歉,最后一个问题,有没有办法将我的结果放入矩阵中?
    【解决方案2】:

    您可以简单地将这些行放入一个数组中,然后使用 print_r 而不是 echo 来打印该数组

    while ($line = fgets($file)) {
      $members[] = $line;
    }
    print_r($members);
    

    【讨论】:

      【解决方案3】:

      这应该取决于您正在处理的文件。

      文件类型:

      • 文本-> fgets($file)
      • CSV -> fgetcsv($file)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多