foreach循环有3个变量

问题描述 投票:1回答:4

我有3个txt文件,所以在每一行他们有一个句子,我想打印它们

$a = '1.txt';
$b = '2.txt';
$c = '3.txt';

$a1= file($a);
$b1= file($b);
$c1= file($c);

$id=1;

echo ' id: '.$id++. 'lang1: ' . $a1. 'lang2:' . $b1. 'lang3:' . $c1 .'<br>' ; 

所以结果应该是

id:1 lang1:来自1.txt lang2的第一行:来自2.txt的第一行lang3:来自3.txt的第一行

id:2 lang1:来自1.txt lang2的第二行:来自2.txt lang3的第二行:来自3.txt的第二行

id:3 lang1:来自1.txt lang2的第三行:来自2.txt lang3的第三行:来自3.txt的第三行

php foreach while-loop
4个回答
1
投票

如何做到的一个例子:

$a = 'file1.txt';
$b = 'file2.txt';
$c = 'file3.txt';

$a1 = explode("\r\n", file_get_contents($a));
$b1 = explode("\r\n", file_get_contents($b));
$c1 = explode("\r\n", file_get_contents($c));

for($id = 1; $id <= 3; $id++) {
    $line = $id - 1;
    echo "id: {$id} lang1: {$a1[$line]} lang2 {$b1[$line]} lang3: {$c1[$line]} <br>"; 
}

0
投票
$file1 = '1.txt';
$file2 = '2.txt';
$file3 = '3.txt';

$handle1 = fopen($file1, 'rb');
$handle2 = fopen($file2, 'rb');
$handle3 = fopen($file3, 'rb');

$id = 1;

while (($a = fgets($handle1)) && ($b = fgets($handle2)) && ($c = fgets($handle3))) {
    echo 'id: ' . $id++ . 'lang1: ' . $a . 'lang2:' . $b . 'lang3:' . $c .'<br>';
}

fclose($handle1);
fclose($handle2);
fclose($handle3);

这将从文件中逐行读取并打印您要求的结果。


0
投票

基本上,你需要:

  1. 打开3个文件
  2. 阅读每个文件的第一行
  3. 以所需格式输出数据
  4. 对其他行重复步骤2和3

打开文件的一个选项:http://php.net/manual/en/function.fopen.php

从文件中读取下一行的一个选项:http://php.net/manual/en/function.fgets.php

当达到文件末尾时,fgets将返回false,因此您可以将循环基于该循环。

你有什么尝试?


0
投票

所有应该是:

$a = '1.txt';
$b = '2.txt';
$c = '3.txt';

$a1= file($a, 'r');
$b1= file($b, 'r');
$c1= file($c, 'r');

$id=1;

while(($a_line = fgets($a1)) !== false) {
    $b_line = fgets($b1);
    $c_line = fgets($c1);
    echo ' id: '.$id++. 'lang1: ' . $a_line . 'lang2:' . $b_line . 'lang3:' . $c_line .'<br>' ; 
}

您还应该关闭文件:

fclose($a1);
fclose($b1);
fclose($c1);

此外,只有在每个文件中具有相同数量的行时,这才有效。

© www.soinside.com 2019 - 2024. All rights reserved.