Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中读取文本文件的行和列_Php - Fatal编程技术网

在php中读取文本文件的行和列

在php中读取文本文件的行和列,php,Php,我有一个文本文件,其内容如下: 120MB 130MB 140MB 140MB 10% 20% 30% 40% 我有一个php代码,它读取文件并打印列 <?php $lines = file('test_ssh.txt'); foreach ($lines as $line) { $parts = explode(' ', $line); echo $parts[2] ; } ?> 通过这段代码,我可以在需要时从第一行读取列(即,如果我需要从html表的第一行

我有一个文本文件,其内容如下:

120MB 130MB 140MB 140MB
10% 20% 30% 40%
我有一个php代码,它读取文件并打印列

<?php
$lines = file('test_ssh.txt');
foreach ($lines as $line) {
    $parts = explode(' ', $line);
    echo $parts[2] ;
}
?>

通过这段代码,我可以在需要时从第一行读取列(即,如果我需要从html表的第一行填充第一列,我可以通过$parts[0]来完成)

但我无法逐列读取第二行(即,如果我只需要从第二行读取第一列),我无法执行此操作,我只能得到空白值


我需要一些二维数组来分别读取行和列,还是有其他更简单的方法?请提供您的专业知识帮助。

试试这个!第一个foreach用于线条,第二个foreach用于爆炸

        <?php
        $lines = file('test_ssh.txt');
        foreach ($lines as $line) {
            $parts = explode(' ', $line);
            foreach ($parts as $part) {
             echo $part;    
            }
        }
试试这个

$array = explode("\n", file_get_contents('file.txt'));

不确定为什么您只想打印第一行中的一个项目和第二行中的所有事件。但如果这真的是你要问的,这里怎么做是一种方法

<?php
$lines = file('test_ssh.txt');
foreach ($lines as $lineNo => $line) {
    $parts = explode(' ', $line);
    if ( $lineNo < 1 ) {
        echo $parts[2] . PHP_EOL;
    } else {
        foreach( $parts as $col ) {  
            echo $col . ' ';
        }
    }
}
在你的评论之后

这是你想要的吗

$lines = file('test_ssh.txt');
foreach ($lines as $line) {
    if ( $line == PHP_EOL ) { continue; } // avoid blank lines causing issues
    $columns = explode(' ', $line);
    echo '<tr>' . PHP_EOL;
    foreach( $columns as $col ) {  
        echo '<td>' . trim($col) . '</td>';
    }
    echo PHP_EOL . '</tr>' . PHP_EOL;
}
结果

<tr>
<td>120MB</td><td>130MB</td><td>140MB</td><td>140MB</td>
</tr>
<tr>
<td>10%</td><td>20%</td><td>30%</td><td>40%</td>
</tr>
<tr>
<td></td>
</tr>
120MB - 10%
130MB - 20%
140MB - 30%

也许如果你给我们看你想要得到的结果,我们会更好地理解你的问题谢谢里格斯,用更多的细节编辑了这个问题。这不正是
file()
所做的吗?我的意思是,我想从任何一行读任何特定的列,不是第二行的所有列和第一行的第三列。我想做的是列_值。在我的情况下,我可以在需要的时候一个一个地浏览所有的专栏,但第二,当我尝试阅读任何一个专栏时,我得到的都是空白,无论是第一、第二或第三。我又一次尝试了。这更像你想要的吗?我现在更接近了吗?非常感谢里格斯的及时努力,可能是我的英语很混乱,我的问题陈述也不太清楚。我试图再次解释,请你忍受我请,我只想显示20%从我的文本文件在浏览器上,没有其他。我该怎么做?如果你能帮我解决这个问题,我会自己解决剩下的问题:)你可以简单地将函数改为
return$lin2[$col]谢谢sochas,您的答案的输出是:14205MB201MB101MB102MB103MB104MB105MB106MB107MBI很抱歉,我没有很好地理解您:(
function getColfromBothLines($col, $lines)
{
    $lin1 = explode(' ', $lines[0]);
    $lin2 = explode(' ', $lines[1]);
    return $lin1[$col] . ' - ' . $lin2[$col];
}

$lines = file('test_ssh.txt');


echo getColfromBothLines(0, $lines).PHP_EOL;
echo getColfromBothLines(1, $lines).PHP_EOL;
echo getColfromBothLines(2, $lines).PHP_EOL;
120MB - 10%
130MB - 20%
140MB - 30%