Здравствуйте.Возник такой вопрос.Имеется CSV файл.При открытии блокнотом картина примерно следующая: ;Цифр. Код;Букв. Код;Наименование ин.валюты;;Единиц;;Курс покупки;Курс продажи; ;840;USD;Доллар США;;1;;31.5000 ;32.5000 ; ;978;EUR;ЕВРО;;1;;39.9000 ;40.7000 ; Мне нужно сделать выгрузку этого файла в базу MySQL,но не всех данных а именно определнных ячеек.Выгрузить нужно только курсы валют 31.5000 ;32.5000 Получается только 2 последние переменные.Как это можно реализовать?А то я только знаю как выгружать всю строку полностью
Использую вот такую функцию $pizza = "1 2 3 4 5"; $pieces = explode(" ", $pizza); echo $pieces[0]; echo(" "); // 1 echo $pieces[1];echo(" "); // 2 echo $pieces[2];echo(" "); // 3 А как сделать так,чтобы данные в переменную $pizza загружались из файла?
Это же аналогично скрипту выше.Мне нужно чтобы я не вручную данные вписывал в переменную $pizza, а так чтобы значения в эту переменную вставлялись из некоторого файла с сервера
Ну как переменная новая не создана=) Код (PHP): $pizza=file_get_contents('csv.csv'); $pizza=explode(';',$pizza); for($i=0;$i<sizeof($pizza);++$i) { echo $pizza[$i]; } Вы про циклы имеете ввиду?
Нет.Цикл мне не нужен,меня устаривает и этот скрипт $pizza='1 2 3 4 5'; $pizza=explode(' ',$pizza); echo $pizza[0], //1 $pizza[1]; //2 Просто мне нужно чтобы данные подгружались из внешнего файла. Пример: У меня есть файл csv.csv В нем содержатся данные типа 1;2;3;4;5 .Мне нужно подключить этот файл и вытащить из него первую ячейку и вторую(в нашем случае это 1 и 2).Загвоздка в том что я не зкаю как подключить файл,выборка уже работает.Нужно просто в переменную указать ссылку на внешний файл
Слушай а еще такой вопрос,уже для общего развития.А можно сделать еще так чтобы выбирать определенные строки из csv файла? Пример: 1;2;3;4;5 6;7;8;9;10 Можно ли используя скрипт $pizza=file_get_contents('csv.csv'); $pizza=explode(';', $pizza); echo $pizza[0],$pizza[1]; //2 Сделать так чтобы вывелись числа 6 и 7,а первая строка 1;2;3;4;5 игнорилась?
Код (PHP): $pizza=file('csv.csv'); $pizza=explode(';',$pizza[1]); echo $pizza[0], //6 $pizza[1]; //7 =)
Вообще-то в PHP есть встроенные функции для чтения и парсинга CSV-файлов. explode может привести к не тем результатам, что нам нужны. Например, если разделитель встречается внутри строки (внутри ячейки): То есть вот такой CSV: Код (Text): 1;"Oleg";"Travel; dogs; photography; programming" Должен после прочтения оказаться вот таким массивом: Код (Text): Array ( [0] => 1 [1] => Oleg [2] => Travel; dogs; photography; programming ) Однако в случае с explode получим совсем не то, что было нужно: Код (Text): Array ( [0] => 1 [1] => "Oleg" [2] => "Travel [3] => dogs [4] => photography [5] => programming" ) По этому юзаем "правильные" функции для работы с форматом CSV: http://www.php.ru/manual/function.fgetcsv.html http://www.php.ru/manual/function.str-getcsv.html http://www.php.ru/manual/function.fputcsv.html
Что касается использования только каких-то определённых строк - то можно в цикле чтения файла добавить условие, которым будем определять, подходит нам эта строка или нет. Допустим, имеем CSV: 1;"Oleg";"Programmer" 3;"Nikolay";"Designer" 4;"Alexandr";"Manager" 5;"Irina";"Designer" И нам надо получить всех дизайнеров. Ок, делаем так: Код (PHP): <?php $f = fopen(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'data.csv', 'r'); while($row = fgetcsv($f, 0, ';')) { if($row[2] === 'Designer') echo($row[0] . ', ' . $row[1] . ', ' . $row[2] . '<br />'); } ?>
Код (PHP): $fopen=fopen('csv.csv','r'); if($fopen) { $pizza=fgetcsv($fopen,0,';'); echo $pizza[0], //1 $pizza[1]; //Oleg; fclose($fopen); } Хотя без цикла как вы просите без 1 строки, это сделать не получится =) Только так: Код (PHP): $fopen=fopen('csv.csv','r'); if($fopen) { $csv=array(); while(false!==($csvs=fgetcsv($fopen,0,';'))) { $csv[]=$csvs; } for($i=1;$i<sizeof($csv);++$i) { echo nl2br($csv[$i][0].' '.$csv[$i][2].' '); } fclose($fopen); }