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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос о функции array_unique()
Как видно из кода - в цикле for я добавляю значения многомерного массива к существующим значениям строковой переменной. В ней в качестве разделителя выступает символ ";". Далее я сохраняю в массив $arraystringMassive список разделённых значений. После этого вывожу его структуру с целью удаления дубликатов, но почему то никакого эффекта не происходит. Подскажите, что я не так делаю ?
Вот здесь надо внимательно сравнить значения и количество символов. Если после array_unique масив не изменился значит там нету повторяющихся елементов, там могуб быть пробелы или \n например
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 13 Июля, 2011 - 15:58:36
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Если separator не содержится в string, то explode() возвращает массив, содержащий один элемент string.
Намёк ясен?
----- PostgreSQL DBA
Костэн
Отправлено: 14 Июля, 2011 - 09:19:20
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2007 Откуда: Россия, Ставрополь
Помог: 0 раз(а)
OrmaJever пишет:
Вот здесь надо внимательно сравнить значения и количество символов. Если после array_unique масив не изменился значит там нету повторяющихся елементов, там могуб быть пробелы или \n например
Извиняюсь, что ввёл Вас в заблуждение. Когда перебирал возможные варианты решения проблемы - удалил из результата запроса к базе данных символ ";" и забыл за это. После исправления, функция
показала, что в некоторых, на первый взгляд одинаковых строках присутствует разница в один символ. Также она показала и одинаковое количество символов в идентичных по содержанию строках, которые остались нетронутыми после применения функции
Пытался выразить благодарность за помощь в решении проблемы, но не получилось, так как у меня ещё мало сообщений. С этим всё понятно, только вот ответ с сервера пришёл неполноценный, если исходить из выведенного firebug'om JSON - сообщения - ", количество сообщений оставленных Вами на форуме, недостаточно для данной операции.". Учитывая, что в начале предложения стоит запятая, то нетрудно догадаться, что перед ней должен быть мой ник-name
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Костэн пишет:
Извиняюсь, что ввёл Вас в заблуждение. Когда перебирал возможные варианты решения проблемы - удалил из результата запроса к базе данных символ ";" и забыл за это
Ну вот видите проблема началась из самого начала
OrmaJever пишет:
В ней в качестве разделителя выступает символ ";"
это где в коде написано?
если explode поделил строку на масив то пол проблемы решено.
Костэн пишет:
показала, что в некоторых, на первый взгляд одинаковых строках присутствует разница в один символ.
Возможно это и есть \n или \r или табуляция их должна удалить trim()
Костэн пишет:
Также она показала и одинаковое количество символов в идентичных по содержанию строках, которые остались нетронутыми после применения функции
идентичный на взгляд не значит идентичных. Например "С" и "C" на вид одинаковые? Только одна руская а вторая англиская, для человека безразницы а для програмы абсолютно другой символ. Ну и кодировка тоже может внести свой вклад
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Костэн
Отправлено: 14 Июля, 2011 - 11:34:00
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2007 Откуда: Россия, Ставрополь
Помог: 0 раз(а)
OrmaJever пишет:
Возможно это и есть \n или \r или табуляция их должна удалить trim()
Должна, но почему то не удалила, так как после её применения длинна строк не изменилась.
OrmaJever пишет:
идентичный на взгляд не значит идентичных. Например "С" и "C" на вид одинаковые? Только одна руская а вторая англиская, для человека безразницы а для програмы абсолютно другой символ. Ну и кодировка тоже может внести свой вклад
Это я понимаю Просто все повторяющиеся значения берутся из одной и той же строки таблицы базы данных. Поэтому вариант с одинаковым "внешним видом" символов отпадает. Кодировка базы данных - UTF8, также как и страница, на которую выводится информация. Меня больше беспокоит - по какой причине функция array_unque() не удаляет повторные значения в массиве, когда они полностью идентичны ? Если честно - не думал, что с такой функцией могут возникнуть такие трудности.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.