创建从 PHP 中的不同文件读取的数组

Creating an array reading from different files in PHP

我正在尝试以下操作,

我有不同的文件(8 个文件)存储这样的值:

1      2      3      4      5      6
7      8      9      10     11     12
....................

我想同时读取 8 个文件并创建一个数组来存储每个文件的第一个值,另一个数组包含第二个元素,依此类推。

例如,如果 file1 的第一个元素是 1,在 file2 8, ..., in file8 23;此迭代中的结果数组将是:

first_array = [1, 8, ....., 23]

我正在对 PHP 中的文件进行一些读取测试,如下所示:

$myfile = fopen("textoPrueba.txt", "r", 
"/home/berni/Documentos/Vesta1");
// Output one character until end-of-file
while(!feof($myfile))
{
   echo fgetc($myfile);
}
fclose($myfile);

此代码仅显示文件的元素,但我想在迭代中获取特定元素。

有人可以给我提示吗?提前致谢

(注意:文件有超过一百万个元素)

做出以下假设:

  • 每个文件都有一串由空格分隔的数字
  • 数字不超过十亿

提取每个文件第一个元素的代码,从您提供的代码开始:

$myfile = fopen("textoPrueba.txt", "r", "/home/berni/Documentos/Vesta1");

// get the first 10 elements one at a time
$str = array();
for($i=0; $i<10; $i++) {
  // get the first 10 elements one at a time
  $str[] = fgetc($myfile);
}
fclose($myfile);

// squish them into a single string
$temp = join($str);

// explode it into an array separated by spaces
$split = explode(' ', $temp);

// get the first number
$first_element_of_file = $split[0];

出于学习目的,这将按照您的要求进行。我没有声称这是处理它的最佳方式!

另一种选择是,在我们 file_get_content 或阅读我们的文件之后,我们将使用一个简单的表达式并使用 preg_match_all:

收集我们的数字
$re = '/([0-9]+)/m';
$str = '1      2      3      4      5      6
7      8      9      10     11     12
1      2      3      4      5      6
1      2      3      4      5      6
';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

foreach ($matches as $key => $numbers) {
    foreach ($numbers as $key2 => $number) {
        echo $number . "\n";
    }
}

var_dump($matches);

array(24) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "1"
  }
  [1]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(1) "2"
  }
  [2]=>
  array(2) {
    [0]=>
    string(1) "3"
    [1]=>
    string(1) "3"
  }
  [3]=>
  array(2) {
    [0]=>
    string(1) "4"
    [1]=>
    string(1) "4"
  }
  [4]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(1) "5"
  }
  [5]=>
  array(2) {
    [0]=>
    string(1) "6"
    [1]=>
    string(1) "6"
  }
  [6]=>
  array(2) {
    [0]=>
    string(1) "7"
    [1]=>
    string(1) "7"
  }
  [7]=>
  array(2) {
    [0]=>
    string(1) "8"
    [1]=>
    string(1) "8"
  }
  [8]=>
  array(2) {
    [0]=>
    string(1) "9"
    [1]=>
    string(1) "9"
  }
  [9]=>
  array(2) {
    [0]=>
    string(2) "10"
    [1]=>
    string(2) "10"
  }
  [10]=>
  array(2) {
    [0]=>
    string(2) "11"
    [1]=>
    string(2) "11"
  }
  [11]=>
  array(2) {
    [0]=>
    string(2) "12"
    [1]=>
    string(2) "12"
  }
  [12]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "1"
  }
  [13]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(1) "2"
  }
  [14]=>
  array(2) {
    [0]=>
    string(1) "3"
    [1]=>
    string(1) "3"
  }
  [15]=>
  array(2) {
    [0]=>
    string(1) "4"
    [1]=>
    string(1) "4"
  }
  [16]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(1) "5"
  }
  [17]=>
  array(2) {
    [0]=>
    string(1) "6"
    [1]=>
    string(1) "6"
  }
  [18]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "1"
  }
  [19]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(1) "2"
  }
  [20]=>
  array(2) {
    [0]=>
    string(1) "3"
    [1]=>
    string(1) "3"
  }
  [21]=>
  array(2) {
    [0]=>
    string(1) "4"
    [1]=>
    string(1) "4"
  }
  [22]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(1) "5"
  }
  [23]=>
  array(2) {
    [0]=>
    string(1) "6"
    [1]=>
    string(1) "6"
  }
}

Demo