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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Массив: из двумерного в одномерный 
:(
    Опции темы
Sunvas
Дата 18.8.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Есть двумерный массив. Как из двумерного массива сделать одномерный и удалить все повторяющиеся элементы?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
sTa1kEr
Дата 18.8.2007, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Код

$items = array("a" => "b", "c" => "d", array("a", "d", "f", "g"));
$arr = array();
array_walk_recursive($items, create_function('$i,$k','global $arr;if(!in_array($i,$arr))$arr[]=$i;'));
var_dump($arr);

PM MAIL   Вверх
Sunvas
Дата 18.8.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Call to undefined function: array_walk_recursive()


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Mal Hack
Дата 18.8.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



А я бы сделал в цикле:
if(is_array($arr[$i]))
array_merge($arr,$arr[$i]);
unset $arr[$i]

Чтобы не было зацикливания можно попробовать while, что наверное лучше или делать новый массив.
PM ICQ   Вверх
sTa1kEr
Дата 18.8.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(Sunvas @  18.8.2007,  11:45 Найти цитируемый пост)
Call to undefined function: array_walk_recursive() 

Да, это в 5ом PHP. Для четвертого можно искусственную рекурсию сделать.
Код

$items = array("a" => "b", "c" => "d", array("a", "d", "f", "g"));
$result = array();
function UniqMerge($item)
{
   global $result;
   if (is_array($item))
   {
      array_walk($item, "UniqMerge");
   }
   else if(!in_array($item, $result, true))
   {
      $result[] = $item;
   }
}
UniqMerge($items);
var_dump($result);

Понимаю, что global - это плохо, но в 4ом PHP проблематично без него будет реализовать.
PM MAIL   Вверх
WolfON
Дата 18.8.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sTa1kEr, да, глобал это ужасно, особенно когда можно обойтись static
PM MAIL ICQ   Вверх
sTa1kEr
Дата 18.8.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(WolfON @  18.8.2007,  13:08 Найти цитируемый пост)
sTa1kEr, да, глобал это ужасно, особенно когда можно обойтись static 

В 4ом PHP?
PM MAIL   Вверх
WolfON
Дата 18.8.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А разве нет? smile

Цитата

The Zend Engine 1, driving PHP 4, implements the static and global modifier for variables in terms of  references.

http://ru2.php.net/static
PM MAIL ICQ   Вверх
sTa1kEr
Дата 18.8.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



WolfON, да, действительно. Хоть это и противоречит всякой логике статических переменных.
PM MAIL   Вверх
Oliver.voron
Дата 15.12.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



имеется многомерный массив 
Array ( [0] => Array ( [optionID] => 32 
                                  [value]      => Array ( [0] => 487 
                                                                    [1] => 669 ) ) 
       [1] => Array ( [optionID] => 7   
                                  [value] => Array ( [0] => 1     
                                                               [1] => 2          ) )
     )

как из него перебрать 4 возможные комбинации массивов вида

Array ( [0] => Array ( [optionID] => 32 
                                  [value]      => Array ( [0] => 487 ) ) 
       [1] => Array ( [optionID] => 7   
                                  [value] => Array ( [0] => 1          ) )
     )

Array ( [0] => Array ( [optionID] => 32 
                                  [value]     => Array ( [0] => 487 ) ) 
       [1] => Array ( [optionID] => 7   
                                  [value]     => Array ( [1] => 2          ) )
     )
итд?

забыл. интересует универсальное решение для случаев когда в массиве может быть более двух элементов. 

Это сообщение отредактировал(а) Oliver.voron - 15.12.2009, 16:34
PM MAIL   Вверх
bars80080
Дата 15.12.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Oliver.voron, вам не кажется, что это не ваша тема, чтоб в ней задавать вопрос?

создайте новую
PM MAIL WWW   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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