Csv dosyasındaki her veri parçası için bir dizi oluşturmak için PHP fgetcsv nasıl kullanılır?

3 Cevap php

Ben zaten kodlanmış bir grafik kullanmak için bazı html kodu bir csv dosyasından veri almak için çalışıyorum. Ben html kodu koymak için PHP kullanmak için her veri ayrı parça için dizileri oluşturmak için PHP ve fgetcsv kullanmaya çalışıyorum. Ben csv dosyasını açmak ve PHP kullanarak yazdırmak nasıl biliyor ve nasıl her satıra ayrı ayrı yazdırmak için, ama her veri parçası virgül ile ayrılmış değil. Bunu yapmak için bir yolu var mı?

Bu yardımcı olur, bu ben almak için çalışıyorum csv veridir.

May 10,72,12,60
May 11,86,24,62
May 12,67,32,34
May 13,87,12,75
May 14,112,23,89
May 17,69,21,48
May 18,98,14,84
May 19,115,18,97
May 20,101,13,88
May 21,107,32,75

Ben mantıklı umuyoruz.


Ben aşağıdaki html kodu içine değerlerini almak için çalışıyorum:

<dd class="pVALUE3"><span><b>VALUE3</b></span></dd>
<dd class="sub pVALUE2" ><span><b>VALUE2</b></span></dd>

Bugüne kadar benim PHP kodu:

    <?PHP 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $date[$c] = $data[0]
        echo "<dd class=\"p" . $data[2] . echo "\"><span><b>" . $data[2] . echo "</b></span></dd>
        <dd class=\"sub p" . $data[3] .  echo "\" ><span><b>" . $data[3] . echo "</b></span></dd>"
        }
                    ?>

Ama beklenmedik bir T_ECHO olduğunu dönen ediyor ...

3 Cevap

Ben aşağıdaki kodu kullanarak bu çözmek için idare ettik:

 <?PHP
/* Open CSV file */

$handle = fopen("defects.csv", "r");
$c = 0;
/* gets data from csv file */
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
/* stores dates as variable $date */
        $date[$c] = $data[0];
        $c++;
        /* inserts defect data into html code */
        echo "<div class=\"bar\"><dd class=\"p" . $data[2] . "\"><span><b>" . $data[2] . "</b></span></dd></div>";
        echo "<div class=\"subbar\"<dd class=\"sub p" . $data[3] . "\" ><span><b>" . $data[3] . "</b></span></dd></div>";
}

echo "</dl>";
echo "<ul class=\"xAxis\">";
/* X AXIS */
/* inserts date data into html code for x axis */
for ($d=0; $d < $c; $d++) {
    echo "<li>" . $date[$d] . "</li>";
}
?>

Ben eğer bu kadar var onu alabilir?

while (($row = fgetcsv($handle, null, ",", '"')) !== false) {
        print_r($row);

Yapabilirsiniz Bundan sonra

foreach($row as $field){
   ...

hayır?

Ithalat verileri için size gerekir verilir:

preg_match('/^(\w+) (\d+)$/i', $row[0], $bits);
$month = $bits[1];
$row[0] = $bits[2];

Ay adını almak için.

Thetaiko yorumladı, kodunuzu yapıştırın ve belki ezmeye bir hata var.

Ben veri ayrı bir parça olarak satırdaki her öğeyi istediğiniz varsayalım, değil mi? Yani, '72 ', '12', vb hepsi ayrı '10 Mayıs'?

Bunu yapmak mümkün olmalıdır fgetcsv kullanma:

while (($data = fgetcsv('file.csv')) !== FALSE)
{
    foreach ($data as $element)
    {
        echo $element.' ';
    }
    echo '<br />';
}

(YANLIŞ dosyanın sonunu gösterir dönene kadar) her zaman fgetcsv Eğer $ data dizi aracılığıyla döngü (Bunu kontrol etmek isteyebilirsiniz, bu geçerli bir dizi var sağlayan ...) bir satır okur, her $ element şimdi bir öğe değildir virgüller arasında idi veri.