Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запись массива в csv файл
Форумы портала PHP.SU » » Вопросы новичков » Запись массива в csv файл

Страниц (1): [1]
 

1. netclan - 25 Сентября, 2013 - 05:19:00 - перейти к сообщению
Пример:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  
  4. $list = array (
  5.     'aaa,bbb,ccc,dddd',
  6.     '123,456,789',
  7.     '"aaa","bbb"'
  8. );
  9.  
  10. $fp = fopen('file.csv', 'w');
  11.  
  12. foreach ($list as $line) {
  13.     fputcsv($fp, split(',', $line));
  14. }
  15.  
  16. fclose($fp);
  17. ?>
  18.  

работает, но вот как можно записать массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => 0324
  4.     [1] => Николаев
  5. )
  6. (
  7.     [0] => 13424
  8.     [1] => Сидоров
  9. )
  10. (
  11.     [0] => 23242
  12.     [1] => Киров
  13. )
  14. (
  15.     [0] => 323424
  16.     [1] => Меньшиков
  17. )
  18. (
  19.     [0] => 4234234
  20.     [1] => Меньшиков
  21. )
  22.  

который и получается при разборе csv функцией fgetcsv? Не понял
2. voltag - 28 Сентября, 2013 - 21:24:01 - перейти к сообщению
Здравствуйте
К сожалению я не могу Вам выдать готового решения, НО кое-что напишу( может поможет)

Это из Вики
Цитата:

CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter) — запятой (,).


у Вас получился файл с данными в первом примере:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. aaa,bbb,ccc,dddd
  3. 123,456,789
  4. """aaa""","""bbb"""
  5.  


вобщем вы можете создать нечто вот такое
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 0324б,Николаев
  3. 13424,Сидоров
  4. 23242,Киров
  5.  


И это должно нормально прочитаться.. вот пример кода
Создаю пишу и читаю
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. //Создание данных
  3.  
  4. $Array_of_CODE_NAME = array();
  5.  
  6. $item['code'] = 111;
  7. $item['name'] = 'петров';
  8. array_push($Array_of_CODE_NAME, $item);
  9.  
  10. $item['code'] = 222;
  11. $item['name'] = 'Сидоров';
  12. array_push($Array_of_CODE_NAME, $item);
  13.  
  14. $item['code'] = 333;
  15. $item['name'] = 'Васечкин';
  16. array_push($Array_of_CODE_NAME, $item);
  17. //и так далее )
  18.  
  19.  
  20.  
  21.  
  22. //преобразование в формат
  23. $content = '';
  24. foreach ($Array_of_CODE_NAME as $key => $item)
  25. {
  26.   $content.=$item['code'].','.$item['name']."\n";
  27. }
  28.  
  29. //запись
  30. $fp = fopen('file.csv', 'w');
  31. fwrite($fp,$content);
  32. fclose($fp);
  33.  
  34.  
  35.  
  36.  
  37. //чтение (взято с php.su, описание fgetcsv)
  38. $row = 1;
  39. $handle = fopen("file.csv", "r");
  40. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  41.     $num = count($data);
  42.     echo "<p> $num полей в строке $row: <br /></p>\n";
  43.     $row++;
  44.     for ($c=0; $c < $num; $c++) {
  45.        echo $data[$c] . "<br />\n";
  46.     }
  47. }
  48. fclose($handle);
  49. // Код проверил у себя.. работает
  50.  


p/s функция split устарела ( так мне ПХП пишет ) пользоваться ей или нет - на Ваше усмотрение

 

Powered by ExBB FM 1.0 RC1