Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как из двух массивово сделать один с повторяющимеся элементами?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
frost18
Отправлено: 08 Июля, 2011 - 11:39:26
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Май 2011  
Откуда: Москва, Росиия


Помог: 0 раз(а)




Есть к примеру массивы:
$one = array (2, 8 , 14 , 7 , 11, 9);
$two = array (18, 2, 6, 8, 13, 19);

Как сделать один с повторными элементами 2, 8 без двойного цикла?
 
 Top
EuGen Администратор
Отправлено: 08 Июля, 2011 - 11:40:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июля, 2011 - 12:51:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А так не сработает: $arr = $arr1 + $arr2; ???
 
 Top
EuGen Администратор
Отправлено: 08 Июля, 2011 - 12:57:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет. Это вообще не удовлетворяет условию задачи. Сложение даст Вам простое слияние, тогда как автору требуется пересечение.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июля, 2011 - 13:13:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Значит я неверно понял задачу.
А именно ответ на то как я её понял, лежит тут: array_merge
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июля, 2011 - 13:24:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen пишет:
Сложение даст Вам простое слияние, тогда как автору требуется пересечение.

А можно уточнить, действительно ли даст, и на какой версии. У меня не получилось сложить массивы, в результате остался только первый.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 08 Июля, 2011 - 13:36:20
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Оператор + всегда ведет себя так, что сливает значения по ключам. Пример:
PHP:
скопировать код в буфер обмена
  1. $rgData0=array(1,'test',4);
  2. $rgData1=array('foo', 6, 'bar');
  3. $rgData2=array('fruits'=>'banana, cherry', 'cars'=>'audi, bmw');
  4. $rgData3=array('baz','cars'=>'audi, bmw');
  5. $rgData=$rgData0+$rgData1;
  6. var_dump($rgData);
  7. $rgData=$rgData0+$rgData2;
  8. var_dump($rgData);
  9. $rgData=$rgData0+$rgData3;
  10. var_dump($rgData);

Результат:
PHP:
скопировать код в буфер обмена
  1.   0 => int 1
  2.   1 => string 'test' (length=4)
  3.   2 => int 4
  4.  
  5.   0 => int 1
  6.   1 => string 'test' (length=4)
  7.   2 => int 4
  8.   'fruits' => string 'banana, cherry' (length=14)
  9.   'cars' => string 'audi, bmw' (length=9)
  10.  
  11.   0 => int 1
  12.   1 => string 'test' (length=4)
  13.   2 => int 4
  14.   'cars' => string 'audi, bmw' (length=9)
  15.  

Так как у первого и второго массива ключи одинаковые (численные: 0,1,2), то остались только значения первого.
Во втором случае ключи разные - вот и остались ключи (и, стало быть, значения) обоих массивов
В третьем случае значения числового ключа второго массива не сохранилось - этот числовой индекс присутствует в первом.

Строго говоря, + - это оператор объединения, а не слияния.
http://www.php.net/manual/en/lan...rators.array.php

Для понимания проще помнить, что массивы из "только значений" имеют тем не менее числовые индексы.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июля, 2011 - 13:51:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Благодарю за разъяснение.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB