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]   

> Без описания
moscwich
Отправлено: 08 Ноября, 2010 - 21:34:50
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2010  
Откуда: Москва


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




В цикле:

$lns - двумерный массив:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [0] => test1
  6.             [1] =>  test2
  7.  
  8.         )
  9.  
  10.     [2] => Array
  11.         (
  12.             [0] => test3
  13.             [1] =>  test2
  14.  
  15.         )
  16.  
  17.     [3] => Array
  18.         (
  19.             [0] => test4
  20.             [1] =>  test3
  21.  
  22.         )
  23.  
  24. )

Но в $alllns получаю:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => test4
  4.     [1] =>  test3
  5.  
  6. )


Хотя ожидал:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => test1
  4.     [1] =>  test2
  5.     [2] => test3
  6.     [3] =>  test2
  7.     [4] => test4
  8.     [5] =>  test3
  9.  
  10. )


В чем я не прав, и как мне получить то что надо?
А еще лучше если сразу получить:
CODE (html):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => test1
  4.     [1] =>  test2
  5.     [2] => test3
  6.     [3] => test4
  7.  
  8. )
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 21:46:48
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




если не ошибаюсь, функция работает с одномерными массивами.
 
 Top
Uchkuma
Отправлено: 08 Ноября, 2010 - 21:48:53
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




А ключи точно целочисленные, а не строковые?

Вообще слияние массивов тут нафиг не нужно. Можно было просто обойти массив $lns, складывая его элементы в другой. Можно и с проверкой на дубликаты.
(Добавление)
vitaliy_mad пишет:
если не ошибаюсь, функция работает с одномерными массивами
Сливает он тоже одномерные.
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 21:52:49
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Uchkuma певый $lns - двумерный
 
 Top
Uchkuma
Отправлено: 08 Ноября, 2010 - 21:57:45
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




vitaliy_mad, смотрим внимательней.
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 22:11:40
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Uchkuma Растерялся сори... не доглядел.... Не понял
 
 Top
moscwich
Отправлено: 09 Ноября, 2010 - 13:34:37
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2010  
Откуда: Москва


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




Uchkuma пишет:
А ключи точно целочисленные, а не строковые?
Вообще слияние массивов тут нафиг не нужно. Можно было просто обойти массив $lns, складывая его элементы в другой.
Ключи только численные, складывание дает тот же результат.
 
 Top
OrmaJever Модератор
Отправлено: 09 Ноября, 2010 - 13:49:06
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




у меня вот этот скрипт
PHP:
скопировать код в буфер обмена
  1. $array = Array(Array('test1', 'test2'), Array('test3', 'test2'),Array('test4', 'test3'));
  2. $alllns = array();
  3.  
  4. for($i=0;$i<3;$i++)
  5. $alllns = array_merge($alllns, $array[$i]);
  6.  
  7. $alllns = array_unique($alllns);
  8. print_r($alllns);

выводит
Array ( [0] => test1 [1] => test2 [2] => test3 [4] => test4 )


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
moscwich
Отправлено: 09 Ноября, 2010 - 15:30:58
Post Id



Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Февр. 2010  
Откуда: Москва


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




Ой, ну я тупой!!!
$alllns = array(); в цикле поставил и только сейчас заметил.
Прошу прощения, тему хорошо бы удалить.
 
 Top
JustUserR
Отправлено: 09 Ноября, 2010 - 21:37:38
Post Id



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


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


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




OrmaJever В общем случая для осуществленя покомпонентного слияния многомерных ассоциативных и индексных массивов основанного за неперекрывающихся значениях - возможно использование рекурсивной функции проводящей анализ типа текущего объекта и передачи его следующему уровню вложенности при определении его как массива


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB