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 :: Версия для печати :: Вопрос о удаление дубликатов.
Форумы портала PHP.SU » » Вопросы новичков » Вопрос о удаление дубликатов.

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

1. event - 29 Июля, 2011 - 23:22:48 - перейти к сообщению
Добрый вечер !
У меня такая ситуация мне нужно вывести все данные из файла id.txt (файл содержит цифры) на страничку, я написал такой скрипт:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. $filename = @file("id.txt"); // Подгружаем содержимое файла id.txt.
  5. if (!$filename) die('Неверный файл !'); // Выводим ошибку если такого файла нету.
  6.  
  7. foreach ($filename as $id) {
  8. echo $id."<br>";
  9. }
  10.  
  11. ?>
  12.  


Но у меня сложилась проблема в файле id.txt в єтом файле находятся разные цифры, есть цифры которые повторяются дважды, есть такие что и повторяются трижды, есть такие которые повторяются много раз, есть такие которые не повторяются, и т.д и т.п.

Ну вот мне нужно вывести на страничку все цифры но без дубликатов, то есть если у нас был файл id.txt с таким содержанием (каждая цифра с новой строчки):
1
1
2
2
2
3
3, то должно получиться так
1
2
3

Вообщем єто вроде бы нужно делать через функцию array_unique, но я пробовал через нее но ничего не вышло, помогите пожалуйста.
2. LIME - 29 Июля, 2011 - 23:40:07 - перейти к сообщению
event покажите как пробовали через array_unique
3. event - 29 Июля, 2011 - 23:42:15 - перейти к сообщению
LIME пишет:
event покажите как пробовали через array_unique


Вот так пробовал:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. $filename = @file("id.txt"); // Подгружаем содержимое файла id.txt.
  5. if (!$filename) die('Неверный файл !'); // Выводим ошибку если такого файла нету.
  6. $test = array_unique($filename);
  7. foreach ($test as $id) {
  8. echo $id."<br>";
  9. }
  10. ?>
  11.  
4. LIME - 29 Июля, 2011 - 23:43:57 - перейти к сообщению
eventи что совсем без изменений?
(Добавление)
я к тому что может в некоторых значениях просто пробелы затесались?
5. event - 29 Июля, 2011 - 23:49:16 - перейти к сообщению
LIME пишет:
eventи что совсем без изменений?
(Добавление)
я к тому что может в некоторых значениях просто пробелы затесались?


Изменения был она обработала только одну цифру нормально, остальные так и остались....
6. LIME - 29 Июля, 2011 - 23:49:32 - перейти к сообщению
ну это конечно странно хотелось бы разобраться
но можно формировать еще 1 массив и каждый раз проверять если in_array то continue если нет то заносим в массив и выводим...или потом выводим полученный массив ...но это конечно не лучший выход
7. iflight - 29 Июля, 2011 - 23:49:43 - перейти к сообщению
Смысл в том, что file() оставляет невидимые знаки табуляции, и поидее после array_unique() будет повторяться последняя в списке цифра. Попробуйте так:
PHP:
скопировать код в буфер обмена
  1. $filename = @file("id.txt"); // Подгружаем содержимое файла id.txt.
  2. if (!$filename) die('Неверный файл !'); // Выводим ошибку если такого файла нету.
  3. foreach($filename as $val){
  4.         $arr[] = trim($val);
  5. }
  6. foreach (array_unique($arr) as $id) {
  7.         echo $id."<br>";
  8. }
8. LIME - 29 Июля, 2011 - 23:52:14 - перейти к сообщению
event пишет:
Изменения был она обработала только одну цифру нормально, остальные так и остались....
попробуйте var_dump массива и покажите что вывело
(Добавление)
iflight пишет:
Смысл в том, что file() оставляет невидимые знаки табуляции, и поидее после array_unique() будет повторяться последняя в списке цифра

вот сейчас чего-то не понял
да остается знак конца строки
но это у всех элементов и идентичности строк это не мешает
можно "на пальцах" объяснить ?
9. event - 30 Июля, 2011 - 00:02:40 - перейти к сообщению
Спасибо разобрался, спасибо Вам LIME, iflight ;)
10. LIME - 30 Июля, 2011 - 00:03:48 - перейти к сообщению
event пишет:
Спасибо разобрался
??? интересно же ))
11. event - 30 Июля, 2011 - 00:05:04 - перейти к сообщению
Если сможете посмотреть сюда, может сможете помочь: http://forum.php.su/topic.php?fo...1&topic=1947
12. iflight - 30 Июля, 2011 - 00:12:38 - перейти к сообщению
LIME у последнего нет переноса строки

 

Powered by ExBB FM 1.0 RC1