как мне получить данные определенной строки в csv-файле из php?

#php #csv

#php #csv

Вопрос:

fegtcsv выполняет работу по извлечению данных из файла csv в php Я написал этот код для извлечения данных из моего входного файла

 <?php
$file_handle = fopen("input.csv", "r");
while(!feof($file_handle)){
    $line_of_text=fgetcsv($file_handle,3020);
    $a= $line_of_text[1];
    $b=$line_of_text[2];
    $c=$line_of_text[3];
    $d=$line_of_text[4];
   }
   fclose($file_handle);
?>
  

теперь, что на самом деле я хочу сделать, это некоторая математическая операция между третьими данными (которая равна $ c ) в каждой строке. например. добавьте $ c в строку 1 с $ c строки 2. и еще несколько математических операций. Я смогу это сделать, только если смогу получить эти данные как c1, что будет $ c первой строки c2, которая будет $ c второй строки. Но я не могу найти, как это сделать. приведенный выше скрипт печатает каждую строку файла. Я не могу контролировать, какие данные какой строки (или строки) печатать. как мне это сделать? что-нибудь, чего мне не хватает для чтения или изучения? пожалуйста, дайте мне знать.

Ответ №1:

Каждый раз, когда вы вызываете fgetcsv , вы получаете другую строку. Поэтому:

 while (!feof($file_handle)){
    $line_of_text = fgetcsv($file_handle, 3020);
    $a1 = $line_of_text[1];
    $b1 = $line_of_text[2];
    $c1 = $line_of_text[3];
    $d1 = $line_of_text[4];

    $line_of_text = fgetcsv($file_handle, 3020);
    $a2 = $line_of_text[1];
    $b2 = $line_of_text[2];
    $c2 = $line_of_text[3];
    $d2 = $line_of_text[4];

    $line_of_text = fgetcsv($file_handle, 3020);
    $a3 = $line_of_text[1];
    $b3 = $line_of_text[2];
    $c3 = $line_of_text[3];
    $d3 = $line_of_text[4];

    echo $a1   $a2   $a3;
}
  

Совет: вы также можете использовать циклы внутри циклов…

Комментарии:

1. спасибо @deceze . это было приятное наблюдение. ну, мне нужно больше работать с csv-файлом и с php-скриптом. Я хочу изучить эти материалы. Я уверен, что таких вещей будет гораздо больше. какую-либо конкретную ссылку вы предлагаете для этого? Я имею в виду csv и php? это было бы оценено. 🙂

Ответ №2:

Ну, попробуйте эти строки, после того, как вы сохраните каждую строку в массиве…

 $csv = array();
$file = fopen('source.csv', 'r');
while (($result = fgetcsv($file,0,";")) !== false)
{
$csv[] = $result;
}
fclose($file);



function content_to_columns($data){
foreach ($data as $line=>$value){
$data[$line]=explode(";",$value);
}
print_r[$data]; //comment when not needed.
}

content_to_columns($csv_file); //
  

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

 A | B
10| 0
20|20
  

$csv[0][0] равно 10

Выполнение операционной математики с ним похоже:

 $csv[0][0]*=5;  //multiplies by 5 the cell value