Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как удалить повторяющиеся элементы из масива  (Прочитано 13076 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
pdimas
Интересующийся

ru
Offline Offline

« : 08-01-2011 16:57 » 

Что то я уже окончательно запутался
Как получить массив $s = array(4,5,6,8);
<?php

$a = array(1,2,3,4,5);
$b = array(2,3,6,8,1);
foreach ($b as $key => $s) {
    if (array_key_exists($key, $a)) unset ($b [$s]);
    echo $s;
}
?>
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 08-01-2011 17:48 » 

pdimas, пример отсюда: http://ru2.php.net/manual/en/function.array-diff.php#101613
Код: (PHP)
<?php

function fullArrayDiff($left, $right)
{
    return array_diff(array_merge($left, $right), array_intersect($left, $right));
}

$a = array(1,2,3,4,5);
$b = array(2,3,6,8,1);

$c=fullArrayDiff($a, $b);

print "<pre>";
print_r($c);
print "</pre>";

?>

Или так:
Код: (PHP)
<?php

$a = array(1,2,3,4,5);
$b = array(2,3,6,8,1);

$c=array_merge(array_diff($a, $b), array_diff($b, $a));

print "<pre>";
print_r($c);
print "</pre>";

?>
« Последнее редактирование: 08-01-2011 17:51 от baldr » Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
pdimas
Интересующийся

ru
Offline Offline

« Ответ #2 : 08-01-2011 17:54 » new

Ух ты Большое спасибо!!!!
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 08-01-2011 17:57 » 

pdimas, можно сделать и вручную, как делал ты, но перед этим нужно будет сделать array_merge().
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
pdimas
Интересующийся

ru
Offline Offline

« Ответ #4 : 08-01-2011 18:58 » 

Да все равно что то у меня не получаестя
А как сравнить масив $row c $a и сделать то же самое
Код:
<?php
require_once (&#39;test_c.php&#39;);
$query "SELECT id, date, time FROM my_table order by id";
$result mysql_query($query);
while (
$row mysql_fetch_array($resultMYSQL_NUM)){
printf("id: %s  date: %s time: %s<br/>"$row[0], $row[1], $row[2]);}

$a = array(&#39;09:00&#39;, &#39;10:00&#39;, &#39;11:00&#39;);
?>
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #5 : 08-01-2011 19:06 » 

pdimas, здесь ты будешь сравнивать уже строки - в первую очередь позаботься о том, чтобы время (или дата?) было в одном формате.
Далее - если ты хочешь сравнивать массивы, то тебе нужно их сформировать, для этого вот тебе подсказка:
Код: (PHP)
$all_times=array();
while ($row = mysql_fetch_array($result, MYSQL_NUM))
{
    $all_times[]=$row[2];
}

// Здесь имеем массив $all_times, содержащий все значения 'time' из результата запроса

Еще способ - сразу выбирать из базы только нужные строки - с помощью условия в WHERE в виде " time in ('09:00:00', '10:00:00', '11:00:00') ".
Это так - подсказки... К тому же я не знаю какой формат полей в базе.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
pdimas
Интересующийся

ru
Offline Offline

« Ответ #6 : 08-01-2011 19:13 » 

baldr, а если мне надо связать время с датой Т.е. для одной даты не может быть одинакового времни
id| date | time
1 | 11.12.12 | 9:00
2 | 11.12.12 | 10:00
3 | 12.12.12 | 9:00
4 | 12.12.12 | 10:00
Я хотел забить все возможное время в массив и потом сравнивать массивы и исключать уже используемое время для выбранной даты
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #7 : 08-01-2011 19:29 » 

pdimas, в MySQL есть поле типа DATETIME - используй его для хранения связанного даты-времени.
И сформулируй подзадачу, пожалуйста, поскольку не совсем понятно что ты хочешь сделать в итоге.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
pdimas
Интересующийся

ru
Offline Offline

« Ответ #8 : 08-01-2011 19:40 » 

Есть база в которой: id, date (дата вбивается в базе ручками), time (выбирается из списка скажем 09:00, 10:00, 11:00 и тд)
Т.е. например: если у нас для какой то даты (например 12.12.12) уже установленно время (например 09:00), то для этой же даты (12.12.12) нельзя больше выбрать это время (09:00) а остались все остальные значения времени (10:00, 11:00 и тд).
Из списка убрать уже выбранные значения времени для этой даты
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #9 : 08-01-2011 19:49 » 

Мда.. Ну ок, если исходить из такой задачи, то, пожалуй, твой подход можно использовать - как выбрать массив времен из строк результата я тебе показал - теперь осталось немного..
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
pdimas
Интересующийся

ru
Offline Offline

« Ответ #10 : 08-01-2011 19:56 » 

baldr, Ага Спасибо тебе большое!!! Буду дальше думать.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines