Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перебрать массив и выкинуть все повторяющиеся данные
 
 автор: Sl   (22.03.2007 в 06:52)   письмо автору
 
 

Есть массив $statUs. В нем идут по строчно данные вот в таком формате - имя|ip
Мне нужно перебрать массив так, чтобы все лишние одинаковые строки удалились из массива а остались только одни единственные
Пример:
Это данные в массиве

name1|123.123.123.1
name2|211.321.321.0
name3|341.32.23.1
name1|123.123.123.1
name3|341.32.23.1
name1|123.123.123.1
name3|341.32.23.1
Это уже обновленный массив! Результат должен быть такой:
name1|123.123.123.1
name2|211.321.321.0
name3|341.32.23.1

Я сделал так, но я не знаю правильно ли это, т.к у меня сейчас нет возможности проверить скрипт. Скорее всего то что я показал это не правильный вариант

foreach($statUs as $key => $val) {
  if($statUs[$key] == $statUs[$key + 1])
    unset($statUs[$key]);
  }
}

Подскажите пожалуйста

   
 
 автор: Sl   (22.03.2007 в 07:12)   письмо автору
 
   для: Sl   (22.03.2007 в 06:52)
 

Также такой вариант написал, но хрен знает правильно ли это

foreach($statUs as $key => $val) {
  $start = $key;
  while($key != count($statUs)) {
    if($start == $key+1) {
      unset($statUs[$start]);
      break;
    }
  }
}

   
 
 автор: ZuArt   (22.03.2007 в 10:18)   письмо автору
 
   для: Sl   (22.03.2007 в 07:12)
 

а зачем такие сложности-то???

Вот блок для "корректировки" массива под один формат

foreach ($statUs as $key => $val)
 $statUs[$key] = strtolower(trim(preg_replace("/ /", "", $val)));


ну а когда массив подогнан
$statUs = array_unique($statUs);

   
 
 автор: Sl   (22.03.2007 в 11:38)   письмо автору
 
   для: ZuArt   (22.03.2007 в 10:18)
 

Объясните плиз, что значит корректировка массива под один формат ?
Функция

array_unigue()

удаляет все одинаковые лишние элементы в массиве как я понял ?

   
 
 автор: cheops   (22.03.2007 в 13:13)   письмо автору
 
   для: Sl   (22.03.2007 в 11:38)
 

Да, удаляет дублирующие элементы (только массив предварительно следует отсортировать).

   
 
 автор: Sl   (22.03.2007 в 13:42)   письмо автору
 
   для: cheops   (22.03.2007 в 13:13)
 

Класс. Спасибо всем. Только что использовал эту функцию, все работает =)

   
 
 автор: ZuArt   (22.03.2007 в 14:35)   письмо автору
 
   для: Sl   (22.03.2007 в 13:42)
 

Под один формат - это просто предварительная обработка на самые явные случаи нестандартной записи... или буковки в слове где-то большие, а где-то маленькие - приводим к одинаковым (маленьким) или где то пробел стоит, хотя его не должно быть... если записи в массиве ЧЕТКО правильные, то корректировка не требуется =) - потому и выделил отдельно.

   
 
 автор: Sl   (22.03.2007 в 15:00)   письмо автору
 
   для: ZuArt   (22.03.2007 в 14:35)
 

Спасибо, что пояснили =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования