2013-07-04 22 views
7

ayrıldı ,) başka bir metin dosyasına yazılır:PHP dizideki değerleri patlayabilir, sekmesine çıkış bir dosyaya aşağıdaki <code>test_tab.txt</code> (sekme ayrılmış) denilen dosya

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 

Ben genel olarak programlamaya yeni değilim, ama etrafında google'dan ve bunu yaparken olası bir yolu bir dizi oluşturmak ve bir şekilde header3 patlamaya olacağını düşünüyorum anahtar/değer çifti. Yine de header1 ve header2 altındaki alanları kopyalamaya nasıl gideceğimi bilmiyorum.

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

verir: Bu yaklaşım konusunda

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 
      ) 

    ) 

Herhangi bir fikir

şu anda tek şey bir dizi oluşturmak için bazı kod nedir? Ben PHP 5.3.10 sürümünü kullanıyorum.

+0

Yerleşik PHP işlevlerini kullanın [fgetcsv()] (http://www.php.net/manual/en/function.fgetcsv.php) ve [fputcsv()] (http: //www.php .net/manual/en/function.fputcsv.php) ayrılmış değer dosyaları ile çalışmak; hatta [SPLFileObject] (http://www.php.net/manual/en/class.splfileobject.php) –

cevap

8

bu deneyin: Bu yardımcı olur

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

Umut.

+0

Çok teşekkür ederim! :) – ictl

+0

Yardım etmekten mutluluk duyuyorum :) –

3

Metin sekmesi ayrılmış ve daha sonra bu bir deneyin gerekir

<?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);?> 
İlgili konular