【问题标题】:php looping through tab separated filephp循环通过制表符分隔的文件
【发布时间】:2014-12-07 04:29:49
【问题描述】:

这段代码很好用。我唯一能弄清楚怎么做的就是把它转换成一个数组。我有 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>";
    }  
} 
?>

【问题讨论】:

  • 你已经有了foreach,并且分解了字符串,如果你愿意,你可以将它们重新分配到另一个
  • 如何确定行尾何时发生?
  • 只检查第一次爆炸的计数,这应该会给你很多行,这个数字将决定你是否在最后。或者只是在foreach之外处理,那应该是结束

标签: php arrays fopen


【解决方案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

编辑 确保列之间有制表符。

t_rac.txt 内容:

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

【讨论】:

  • 这正是我要找的……但我得到了这个错误 注意:未定义的偏移量:第 17 行 /home1/donavons/public_html/php/index.php 中的 3 这是第 17 和 18 行 echo $returnArray[0][3]; echo implode(",\t", $returnArray[0]);
  • 抱歉,数组名称有错别字,但请确保列之间有制表符。
  • 感谢@Grzegorz Krauze 现在试用
【解决方案2】:

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

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

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

注意 php explode 返回一个数组,所以你已经有了 cols 数组。要从开头省略 row[],请在数组上使用 array_shift($a)

【讨论】:

  • 谢谢@Andras,我忘了爆炸是这样做的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多