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]   

> Описание: Реализация
Nizz
Отправлено: 23 Мая, 2018 - 15:13:39
Post Id



Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Март 2016  


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




Здравствуйте. Помогите как можно реализовать дублирование элементов массива в соответствующем виде. Опишу как это должно выглядеть:

Имеем массив вида

PHP:
скопировать код в буфер обмена
  1. $array = array('имя', 'почта', 'телефон');


Мне необходимо продублировать его элементы таким образом, что бы повторяющиеся значения шли друг, за другом. То есть так:

PHP:
скопировать код в буфер обмена
  1. $array = array('имя', 'имя', 'почта', 'почта', 'телефон', 'телефон');


Примечание: Кол-во элементов в массиве все время разное. Пробовал array_merge_recursive, но ничего не получилось. Помогите пожалуйста.

(Отредактировано автором: 23 Мая, 2018 - 15:14:38)

 
 Top
Мелкий Супермодератор
Отправлено: 23 Мая, 2018 - 15:37:22
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $out = [];
  2. foreach ($in as $el) {
  3.   for ($i=0; $i < $multiplier; $i++) {
  4.     $out[] = $el;
  5.   }
  6. }


-----
PostgreSQL DBA
 
 Top
Nizz
Отправлено: 23 Мая, 2018 - 15:48:39
Post Id



Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Март 2016  


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




Мелкий Спасибо. Но у меня ругается на
PHP Parse error: syntax error, unexpected

Да и если честно, так и не понял куда вставить свой массив в ваш код.
 
 Top
Строитель Модератор
Отправлено: 23 Мая, 2018 - 15:55:06
Post Id



Участник


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


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




Nizz пишет:
PHP Parse error: syntax error, unexpected
Версия пхп у вас древняя, потому и ругается. См. этот же пример
 
 Top
Nizz
Отправлено: 23 Мая, 2018 - 16:01:50
Post Id



Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Март 2016  


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




Строитель спасибо вам за помощь.
Ошибку решил лишь так
Правда не знаю насколько это корректно.
В отличии от кода Мелкого, ваш работает. Правда выдал не много странный результат. Даже не похож на многомерный массив.

PHP:
скопировать код в буфер обмена
  1. array(6) { [0]=> string(6) "имя" [1]=> string(6) "имя" [2]=> string(10) "почта" [3]=> string(10) "почта" [4]=> string(14) "телефон" [5]=> string(14) "телефон" } Array ( [0] => имя [1] => имя [2] => почта [3] => почта [4] => телефон [5] => телефон )
 
 Top
Строитель Модератор
Отправлено: 23 Мая, 2018 - 16:11:39
Post Id



Участник


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


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




Nizz пишет:
В отличии от кода Мелкого, ваш работает.
Так это и есть код от Мелкий - а ошибка ваша решается путём устаревшего объявления массивов:

PHP:
скопировать код в буфер обмена
  1. // Вместо этой записи
  2. $out = [];
  3.  
  4. // нужно записать так
  5. $out = array();
Код целиком под ваш PHP будет выглядеть так:
Спойлер (Отобразить)
Nizz пишет:
не много странный результат
Это результат работы функции var_dump() так "странно" выглядит. Чтоб понятнее был вывод, можно использовать тег <pre>:
 
 Top
Nizz
Отправлено: 23 Мая, 2018 - 16:25:01
Post Id



Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Март 2016  


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




Строитель Извините пожалуйста я сильно затупил. Разобрался. Огромное вам спасибо. С меня +.
 
 Top
Строитель Модератор
Отправлено: 23 Мая, 2018 - 16:33:18
Post Id



Участник


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


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




Nizz, бывает... )
 
 Top
Vladimir Kheifets
Отправлено: 24 Мая, 2018 - 07:28:19
Post Id



Частый посетитель


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


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




Nizz пишет:
Здравствуйте. Помогите как можно реализовать дублирование элементов массива в соответствующем виде. Опишу как это должно выглядеть:

Имеем массив вида

PHP:
скопировать код в буфер обмена
  1. $array = array('имя', 'почта', 'телефон');


Мне необходимо продублировать его элементы таким образом, что бы повторяющиеся значения шли друг, за другом. То есть так:

PHP:
скопировать код в буфер обмена
  1. $array = array('имя', 'имя', 'почта', 'почта', 'телефон', 'телефон');


Примечание: Кол-во элементов в массиве все время разное. Пробовал array_merge_recursive, но ничего не получилось. Помогите пожалуйста.

Доброе утро!
Вроде бы уже разобрались, но на всякий случай может пригодится array_merge
Спойлер (Отобразить)

Удачи!

(Отредактировано автором: 24 Мая, 2018 - 07:32:10)

 
 Top
Nizz
Отправлено: 24 Мая, 2018 - 10:40:33
Post Id



Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Март 2016  


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




Vladimir Kheifets спасибо за помощь. Я пробовал array_merge так же как и array_merge_recursive. Но у меня все-равно получался рекурсивный результат. А вот применить
- не догадался. Спасибо за просвещение.
 
 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