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

Поиск:

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


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Имеем массив вида:
Код

$a = array(
  100 => 1,
  200 => 2,
  350 => 1,
  760 => 3,
);

как из него оптимальнее всего получить массив следующего вида:
Код

$b = array(
  1 => array(100, 350),
  2 => array(200),
  3 => array(760),
);

PM MAIL WWW ICQ Skype   Вверх
Sanchezzz
Дата 12.3.2013, 17:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



Код


$array  = array(
  100 => 1,
  200 => 2,
  350 => 1,
  760 => 3,
);

$new = array();
foreach($array as $key=>$item){
     $new[$item][] = $key
}


Это сообщение отредактировал(а) Sanchezzz - 12.3.2013, 17:36


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
The_Aleksey
Дата 12.3.2013, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


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

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



Код

$a = array(
  100 => 1,
  200 => 2,
  350 => 1,
  760 => 3,
);

$b = array();
foreach($a as $key=>$value)
{        
    $b[$value] = array_keys($a, $value);
}

и на выходе будет
Код

Array
(
    [1] => Array
        (
            [0] => 100
            [1] => 350
        )

    [2] => Array
        (
            [0] => 200
        )

    [3] => Array
        (
            [0] => 760
        )

)
 

PM MAIL   Вверх
baldina
Дата 12.3.2013, 17:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



тогда уж
Код

$b = array();
foreach($a as $value=>$key)
  if (!isset ($b[$key]))
     $b[$key] = array_keys($a, $key);

PM MAIL   Вверх
The_Aleksey
Дата 12.3.2013, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


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

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



кстати да, это я не доглядел

Это сообщение отредактировал(а) The_Aleksey - 12.3.2013, 18:05
PM MAIL   Вверх
baldina
Дата 12.3.2013, 18:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



вот еще вариант, покороче
Код

$b = array();
foreach(array_unique($a) as $key)
     $b[$key] = array_keys($a, $key);

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.1496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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