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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать совпадения в массивах 
V
    Опции темы
capitan
Дата 16.12.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Столкнулся сегодня с такой задачей.
есть массивы вида:
Код

array (
  0 => '1',
  1 => '3',
  2 => '2'  
)

array (
  0 => '1',
  1 => '4',
  2 => '5'  
)

array (
  0 => '1',
  1 => '3',
  2 => '5'  
)


Нужно посчитать кол-во совпадений значений массивов. Чтобы результирующий массив был вида:
Код

array (
  1 => '3',
  2 => '1',
  3 => '2',  
  4 => '1', 
  5 => '2', 
)


Как бы сделать рациональнее? Пока вариант перебирать массивы по порядку и записывать счетчик в результирующий. Кто предложит свой вариант?


Это сообщение отредактировал(а) capitan - 16.12.2009, 17:54
PM MAIL WWW ICQ   Вверх
NewDima
Дата 16.12.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



Количество совпадений чего и где?

Добавлено через 1 минуту и 13 секунд
Даже не понимая задачу до конца, скажу, что скорее всего понадобятся две или одна из функций array_intersect и array_diff
PM ICQ   Вверх
capitan
Дата 16.12.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно посчитать кол-во совпадений значений массивов. Например: значение 1 повторяется 3 раза.  В результирующем массиве ключ - это значение из массивов, значение - это счетчик повторений.

Решил пока таким образом:
Код

    $result = array();

    foreach($row as $value) {
        // $value['ids']   вида :1:2:3:4:5:6:
        preg_match_all('~:([0-9]+)~msi', $value['ids'], $categories);         
        $result = array_merge ($result, $categories[1]);            
    }
    $counter = array_count_values ($result);  


Это сообщение отредактировал(а) capitan - 16.12.2009, 17:55
PM MAIL WWW ICQ   Вверх
Nigel
Дата 16.12.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

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



Код

$a = array_merge(array (
  0 => '1',
  1 => '3',
  2 => '2'  
),
array (
  0 => '1',
  1 => '4',
  2 => '5'  
),
array (
  0 => '1',
  1 => '3',
  2 => '5'  
));

$a = array_count_values($a);
ksort($a);
print_r($a);

PM MAIL   Вверх
capitan
Дата 16.12.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Nigel,  впринципи тоже самое. Как Вы видели массивы у меня получаются при foreach.  Сортировка тут лишняя.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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