2012-03-31 3 views
0

Я искал, чтобы узнать, не пробил ли кто-нибудь еще этот код, но это оказалось бесполезным. У меня возникли проблемы с пониманием того, что происходит в этом примере кода php от here.Проблема с пониманием образца кода PHP

Я до сих пор в настоящее время очень новичок в программировании и PHP в целом, так что я надеюсь кто-то может дать мне чистое объяснение (я прочитал документацию, но я до сих пор не в состоянии полностью понять код)

В настоящее время я занимаюсь проектом для преобразования загруженного CSV-файла в массив, а затем в базу данных. Пример кода ниже:

Пример # 1 Чтение и печать всего содержимого в CSV файл

<?php 
$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 


?> 

Я думаю, что моя проблема действительно с пониманием метода fgetcsv, но если кто-то может дать мне с разбивкой это было бы действительно оценено.

+1

Функция '' fgetcsv() '] (http://php.net/fgetcsv) захватывает каждую строку из файла CSV. С каждой строкой itdisplays, сколько полей находится в строке, затем эхо все поля в строке. Если вас смущает определенная функция, посмотрите ее на [PHP.net] (http://php.net). – animuson

ответ

3

$row = 1;

Устанавливает начальное число обработанных строк.

if (($handle = fopen("test.csv", "r")) !== FALSE) {

Попытки открыть файл (только для чтения), продолжая только тогда, когда это возможно.

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

итерацию через каждую строку в CSV (с максимальной длиной строки будучи 1000 символов и разделитель полей будучи запятой), продолжая только тогда, когда он может, потянув за строку, как индексный массив полей.

$num = count($data);

Получает количество полей в строке.

echo "<p> $num fields in line $row: <br /></p>\n";

выводит количество полей в данной строке.

$row++;

Приращивает номер строки.

for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; }

итерацию через каждое поле в строке, и выводит его значение.

fclose($handle);

Закрывает файл.

+0

Спасибо, я очень ценю ваше время и силы. – EGHDK

1

fgetcsv читает ваш csv по строкам.

Он возвращает ассоциативный массив. Если у вас есть 10 столбцов в csv, например:

csv1, csv2, csv3, ... csv10 переменная $ data каждый цикл будет таким массивом, как (csv1 => "value" 1 ... csv10-> «value10»)

Так что ваш код печати первой НЮМ столбцов файла CSV

count($data) 

затем итерацию строку, взятую из CSV и распечатать все столбцы значений

for ($c=0; $c < $num; $c++) { 
     echo $data[$c] . "<br />\n"; 
    } 

Это для каждой строки файла

+0

Хорошее объяснение также. Очень признателен. – EGHDK

Смежные вопросы