Помощник
|
Функция fgetcsv(), принцип работы |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
yury_mw |
2.1.2011, 13:41;
Ответить: yury_mw
Сообщение
#2
|
|
Banderas,
в строке[php]while($element = $each($order)) {[/php]лишний $, правильно так: [php]while($element = each($order)) {[/php] |
|
|
Banderas
|
Сообщение
#3
|
|
Точно, но появилась новая ошибка. Судя по описании функции fgetcsv() переменная $order должна быть массивом. Но компилятор пишет
Warning: Variable passed to each() is not an array or object in Z:\home\test1.ru\www\vieworders.php on line 17
|
|
|
yury_mw |
2.1.2011, 13:50;
Ответить: yury_mw
Сообщение
#4
|
|
Banderas,
не знаю, у меня работает без ошибок. Ищите очепятки в коде. [php]<?php $fp = fopen("orders.txt", 'rb'); while (!feof($fp)) { $order = fgetcsv($fp, 1024, "\t"); } fclose($fp); while($element = each($order)) { echo $element['key'].'=>'; echo $element['value'].'<br />'; } ?>[/php] Вывод: 0=>20:04:36 1st
1=>2 покрышек 2=>23 масла 3=>45 свечей 4=>всего: $732 |
|
|
matroskin8 |
2.1.2011, 15:41;
Ответить: matroskin8
Сообщение
#5
|
|
В чем проблема? Что я делаю не так? И как работает функция fgetcsv()? Функция читает строку из файла и по своей работе аналогична функции fgets(), с той разницей, что предназначена для работы с файлами csv (но работает и с txt). А что мы должны получить в итоге? Просто массив строк или массив какого-то элемента строк? Можно получить и то, и другое - только поставить разделители в считываемом файле: orders.csv или orders.txt: 01:44:46 31st, 3 покрышек, 2 масла, 12 свечей, всего: $441.6 01:45:30 31st, 12 покрышек, 4 масла, 34 свечей, всего: $1651.2 19:45:58 1st, 3 покрышек, 5 масла, 23 свечей, всего: $530.4 19:48:39 1st, 5 покрышек, 34 масла, 1 свечей, всего: $1012.8 19:49:18 1st, 32 покрышек, 1 масла, 12 свечей, всего: $3909.6 20:01:10 1st, 32 покрышек, 1 масла, 12 свечей, всего: $3909.6 20:04:36 1st, 2 покрышек, 23 масла, 45 свечей, всего: $732 index.php: [php]<?php $fp = fopen("orders.txt", 'r'); while (!feof($fp)) { $order[] = fgetcsv($fp); } fclose($fp); // распечатываем содержимое массива echo "<pre>"; print_r ($order); echo "</pre>"; // распечатываем нужный элемент массива, например, 1-ый элемент каждой строки for($i = 0; $i < count($order); $i++) { echo $order[$i][0]. " | "; } ?>[/php] Поблагодарили: (0) |
|
|
Banderas
|
Сообщение
#6
|
|
Матроскин, спасибо огромное! Не знал что создается вложенный массив, хотя можно было и догадаться.
|
|
|
matroskin8 |
2.1.2011, 16:02;
Ответить: matroskin8
Сообщение
#7
|
|
Рад был помочь :)
|
|
|
Banderas
|
Сообщение
#8
|
|
Теперь мне нужно удалить все повторяющиеся элементы массива. Знаю что для этого существует функция array_unique(). Но она не работает с многомерными массивами. Так что работать я стал с $value. Для начала код
[php] foreach ($order as $key => $value){ for ($i=0;$i<count($value);$i++) { $newarr = array_unique($value[$i]); /* echo '<pre>'; print_r ($value[$i]); echo '</pre>'; */ } }[/php] Выводит ошибку Warning: array_unique() expects parameter 1 to be array, string given in Z:\home\test1.ru\www\vieworders.php on line 39 Хотя массив вроде числовой... В чем проблема? |
|
|
matroskin8 |
2.1.2011, 23:08;
Ответить: matroskin8
Сообщение
#9
|
|
В ошибке сообщается, что параметром функции должен быть массив, но в качестве параметра оказывается строка. А конкретнее можно о повторяющихся элементах массива, а то не совсем понятно. Если хотя бы один из элементов массива встречается в другом, то весь второй массив не подходит или только его элемент? Лучше, если на примере покажешь.
|
|
|
Banderas
|
Сообщение
#10
|
|
Например у меня есть данные в файлике
19:48:39 1st, 5 покрышек, 34 масла, 1 свечей, всего: $1012.8 20:01:10 1st, 32 покрышек, 1 масла, 12 свечей, всего: $3909.6 20:01:10 1st, 32 покрышек, 1 масла, 12 свечей, всего: $3909.6 20:04:36 1st, 2 покрышек, 23 масла, 45 свечей, всего: $732 Из них два идентичны. Мне нужно что бы удаляло из массива только идентичные элементы, тоесть что бы в массиве после работы функции остались такие элементы 19:48:39 1st, 5 покрышек, 34 масла, 1 свечей, всего: $1012.8
20:01:10 1st, 32 покрышек, 1 масла, 12 свечей, всего: $3909.6 20:04:36 1st, 2 покрышек, 23 масла, 45 свечей, всего: $732 |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Не срабатывает функция flush. Отключение буфферизации. | 2 | bombei | 7138 | 3.9.2014, 22:23 автор: -Arks- |
|
функция "mysql_real_escape_string" выдаёт ошибки! | 19 | Panich | 12637 | 25.5.2011, 13:57 автор: -Panich- |
|
Функция задержки | 3 | people2010 | 6679 | 20.8.2010, 5:37 автор: -Alcorn- |
Текстовая версия | Сейчас: 19.4.2024, 16:20 |