Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с array_unique() 
:(
    Опции темы
Serebrus
Дата 10.9.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



Привет.

Подскажите пожалуйста, в чем проблема:
Код

$query=mysql_query("SELECT `data` FROM `order`;");
while($res=mysql_fetch_array($query, MYSQL_NUM))
{
 $all[]=$res[0];
}

Результат этого кода (т.е. значения массива):
8.8.2008
8.8.2008
10.8.2008
11.8.2008
12.8.2008
12.8.2008
15.8.2008
16.8.2008
19.8.2008
19.8.2008
Обработка:
 
Код

$all=array_unique($all);

for($i=1; $i<=count($all); $i++)
{
 echo $all[$i-1]."</br>";
}

Результат:
8.8.2008
                      //пустая строка
10.8.2008
11.8.2008
12.8.2008
                      //пустая строка
15.8.2008

count($all)=7 (включая 2х пустых строк, откуда они?)
Где может быть ошибка
PM MAIL   Вверх
bars80080
Дата 10.9.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



читаем документацию http://php.ru/manual/function.array-unique.html
Цитата

array_unique() берёт в качестве параметра array и возвращает новый массив без повторяющихся значений. 

Обратите внимание, что ключи сохранятся. array_unique() сначала сортирует значения как строки, сохраняет первый встреченный ключ для каждого значения и игнорирует все последующие ключи. Это не означает, что первый ключ каждого значения неотсортированного array будет сохранён. 

дабы вывести без пустых строк, можно проверять их на пустоту:
Код

$all=array_unique($all);

for($i=0; $i<count($all); $i++)
{
if(empty($all[$i])) continue;
echo $all[$i]."</br>";
}


PM MAIL WWW   Вверх
Serebrus
Дата 10.9.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

Репутация: нет
Всего: нет



bars80080, обратите внимание что после array_unique значения 16.8.2008 и 19.8.2008 не внесены в новый массив, я не понил этого

Это сообщение отредактировал(а) Serebrus - 10.9.2008, 14:36
PM MAIL   Вверх
bars80080
Дата 10.9.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ага, это следствие того, что count считает реальное количество элементов и больше не выводит. у тебя кстати ошибки отключены, что не есть гуд

самое простое с этим справится - вместо for() использовать foreach()
PM MAIL WWW   Вверх
teroni
Дата 10.9.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Ага, есть 2 варианта..
Либо делать начало как у вас, а выводить значения не циклом for, а так:
Код

foreach ($all as $date)
   echo $date."</br>";

Либо на уровне мускла сразу брать из базы только уникальные даты:
Код

SELECT `data` FROM `order`  GROUP BY `data`


Это сообщение отредактировал(а) teroni - 10.9.2008, 16:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.