#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