php循环选项卡分隔文件

时间:2014-12-07 04:29:49

标签: php arrays fopen

这段代码效果很好。我唯一可以弄清楚如何做到这一点是将其转换为数组。我有26到38行(这个数字不同)我想要做的是让它将每行结果转换成自己的数组。

 $row[1] col1, col3, col4, col5, col8
 $row[2] col1, col3, col4, col5, col8
 $row[3] col1, col3, col4, col5, col8

然后我希望能够像这样访问每个结果:echo $ row [1];我怎么能这样做,怎么知道什么时候结束?

<?php     
$a = file_get_contents( "t_rac.txt" ); 
$a = str_replace( array( "\r\n" , "\t" ) , array( "[NEW*LINE]" , "[tAbul*Ator]" ) , $a ); 
foreach( explode( "[NEW*LINE]" , $a ) AS $lines ) {  
    foreach( explode( "[tAbul*Ator]" , $lines ) AS $li ) { 
    if (strpos($li,',') !== false) 
    {
    }
    else {
    echo $li; 
    }
    echo "<br>";
    }  
} 
?>

2 个答案:

答案 0 :(得分:1)

<?php
 //use file to get array of lines
 $arrayContent=file("t_rac.txt");
 $returnArray=array();
 $i=0;

 foreach($arrayContent as $row){
   $returnArray[$i++]=explode(",\t", $row);
 }

 ?>

因此,您拥有多维数组。您可以像使用它一样使用它:

echo $returnArray[0][3]; //prints single col5 value
echo implode(",\t", $returnArray[0]); //prints col1, col3, col4, col5, col8

修改 确保你在cols之间有标签。

t_rac.txt内容:

 $row[1]    col1,   col3,   col4,   col5,   col8
 $row[2]    col1,   col3,   col4,   col5,   col8
 $row[3]    col1,   col3,   col4,   col5,   col8

答案 1 :(得分:0)

这将构建一个数字1到10的php数组:

$a = array();
for ($i=1; $i<=10; $i++) {
    $a[] = $i;
}

[]表示法会自动附加到数组的末尾,不需要下标

请注意,php explode会返回一个数组,因此您已经拥有了cols数组。要从头开始省略行[],请在数组上使用array_shift($a)