2014-12-07 102 views
2

此代碼很好。我能弄清楚如何做的唯一的事情就是把它轉換成一個數組。我有26到38行(這個數字變化),我想要做的就是把結果的每一行變成它自己的數組。php循環選項卡分隔文件

$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>"; 
    } 
} 
?> 
+0

你已經有了'foreach',併發生爆炸的字符串,你可能只是重新分配他們到另外一個,如果你喜歡 – Ghost 2014-12-07 04:32:57

+0

我怎麼能確定當行結束髮生? – 2014-12-07 04:39:27

+0

只需檢查第一次爆炸的次數,即應該給你有多少行,這個數字將決定你是否在結束。或者只是在foreach之後進行處理,那應該是結束 – Ghost 2014-12-07 04:43:30

回答

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); 
} 

?> 

當你有多維數組的結果上使用array_shift($a)。您可以使用它像:

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 
+0

這正是我正在尋找...但即時獲取此錯誤**注意:未定義的偏移量:3在/home1/donavons/public_html/php/index.php在線17 **這是第17和18行'回聲$ returnArray [0] [3]; echo implode(「,\ t」,$ returnArray [0]);' – 2014-12-07 17:19:00

+0

對不起,數組名中存在拼寫錯誤,但也要確保列之間有標籤。 – 2014-12-07 19:11:02

+0

謝謝@格熱羅茲克勞茲現在試用它 – 2014-12-11 03:12:06

0

這將建立一個PHP陣列與數字1到10:

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

[]符號自動附加到該陣列的端部,不需要一個下標

注意到php explode返回一個數組,所以你已經有了col數組。省略行[]從一開始,該陣列

+0

謝謝@Andras我忘了爆炸做到了! – 2014-12-07 17:21:01