2013-07-04 33 views
7

Tôi đã điều sau đây trong một tập tin gọi test_tab.txt (tab tách):PHP - nổ giá trị trong một mảng, đầu ra để tab tách tập tin

header1 header2 header3 
field1 field1a field1b; field1c 
field2 field2a field2b 
field3 field3a 
field4 field4a field4b; field4c; field4d; field4e 
field5 field5a 
field6 field6a field6b; field6c 

Tôi muốn chuyển đổi đó như sau (cũng tab tách , ghi vào một tập tin văn bản):

header1 header2 header3 
field1 field1a field1b 
field1 field1a field1c 
field2 field2a field2b 
field3 field3a 
field4 field4a field4b 
field4 field4a field4c 
field4 field4a field4d 
field4 field4a field4e 
field5 field5a 
field6 field6a field6c 
field6 field6a field6c 

tôi mới đến lập trình nói chung, nhưng tôi đã googled xung quanh và tôi nghĩ một cách tốt để làm điều này sẽ tạo ra một mảng và bằng cách nào đó nổ tung các header3 cặp khóa-giá trị. Tôi không chắc chắn làm thế nào để đi về sao chép các lĩnh vực dưới header1 và header2 mặc dù.

Tất cả tôi có vào lúc này là một số mã để tạo ra một mảng:

$mainarray = array(); 
foreach (file('test_tab.txt') as $row) { 
    list($header1, $header2, $header3) = explode("\t", $row); 
    $mainarray[] = array(header1 => $header1, header2 => $header2, header3 => $header3); 
} 

print_r($mainarray); 

mang đến cho:

Array 
    (
     [0] => Array 
      (
       [header1] => header1 
       [header2] => header2 
       [header3] => header3 

      ) 

     [1] => Array 
      (
       [header1] => field1 
       [header2] => field1a 
       [header3] => field1b; field1c 

      ) 

     [2] => Array 
      (
       [header1] => field2 
       [header2] => field2a 
       [header3] => field2b 

      ) 

     [3] => Array 
      (
       [header1] => field3 
       [header2] => field3a 
       [header3] => 

      ) 

     [4] => Array 
      (
       [header1] => field4 
       [header2] => field4a 
       [header3] => field4b; field4c; field4d; field4e 

      ) 

     [5] => Array 
      (
       [header1] => field5 
       [header2] => field5a 
       [header3] => 

      ) 

     [6] => Array 
      (
       [header1] => field6 
       [header2] => field6a 
       [header3] => field6b; field6c 
      ) 

    ) 

Bất kỳ ý tưởng về cách tiếp cận này? Tôi đang sử dụng PHP phiên bản 5.3.10.

+0

Sử dụng các hàm PHP tích hợp [fgetcsv()] (http://www.php.net/manual/en/function.fgetcsv.php) và [fputcsv()] (http: //www.php .net/manual/en/function.fputcsv.php) để làm việc với các tệp có giá trị được phân tách; hoặc thậm chí [SPLFileObject] (http://www.php.net/manual/en/class.splfileobject.php) –

Trả lời

8

Hãy thử điều này:

// read input file 
$fp = fopen('test_tab.txt', 'r'); 

// write to an output file 
$fp1 = fopen('output.txt', 'w'); 

while(($data = fgetcsv($fp, '', "\t")) !== FALSE) { 
    $list = explode(';', $data[ 2 ]); 

    foreach($list as $column) { 
     fwrite($fp1, '"' . $data[ 0 ] . "\"\t\"" . $data[ 1 ] . "\"\t\"" . trim($column) . "\"\n"); 
    } 
} 

fclose($fp1); 
fclose($fp); 

Hope this helps.

+0

Cảm ơn bạn rất nhiều! :) – ictl

+0

Rất vui được trợ giúp :) –

3

văn bản của bạn phải được tách với tab và sau đó thử thế này,

<?php $mainarray = array(); 
foreach (file('test_tab.txt') as $row) { 
    $ar = explode("\t", $row); 
    $mainarray[] = array('header1' => $ar[0], 'header2' => $ar[1], 'header3' => $ar[2]); 
} 

var_dump($mainarray);?> 
Các vấn đề liên quan