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
Форумы портала PHP.SU :: Версия для печати :: Дублирование элементов массива
Форумы портала PHP.SU » » Вопросы новичков » Дублирование элементов массива

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

1. Nizz - 23 Мая, 2018 - 15:13:39 - перейти к сообщению
Здравствуйте. Помогите как можно реализовать дублирование элементов массива в соответствующем виде. Опишу как это должно выглядеть:

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

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


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

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


Примечание: Кол-во элементов в массиве все время разное. Пробовал array_merge_recursive, но ничего не получилось. Помогите пожалуйста.
2. Мелкий - 23 Мая, 2018 - 15:37:22 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $out = [];
  2. foreach ($in as $el) {
  3.   for ($i=0; $i < $multiplier; $i++) {
  4.     $out[] = $el;
  5.   }
  6. }
3. Nizz - 23 Мая, 2018 - 15:48:39 - перейти к сообщению
Мелкий Спасибо. Но у меня ругается на
PHP Parse error: syntax error, unexpected

Да и если честно, так и не понял куда вставить свой массив в ваш код.
4. Строитель - 23 Мая, 2018 - 15:55:06 - перейти к сообщению
Nizz пишет:
PHP Parse error: syntax error, unexpected
Версия пхп у вас древняя, потому и ругается. См. этот же пример
5. Nizz - 23 Мая, 2018 - 16:01:50 - перейти к сообщению
Строитель спасибо вам за помощь.
Ошибку решил лишь так
Правда не знаю насколько это корректно.
В отличии от кода Мелкого, ваш работает. Правда выдал не много странный результат. Даже не похож на многомерный массив.

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] => телефон )
6. Строитель - 23 Мая, 2018 - 16:11:39 - перейти к сообщению
Nizz пишет:
В отличии от кода Мелкого, ваш работает.
Так это и есть код от Мелкий - а ошибка ваша решается путём устаревшего объявления массивов:

PHP:
скопировать код в буфер обмена
  1. // Вместо этой записи
  2. $out = [];
  3.  
  4. // нужно записать так
  5. $out = array();
Код целиком под ваш PHP будет выглядеть так:
Спойлер (Отобразить)
Nizz пишет:
не много странный результат
Это результат работы функции var_dump() так "странно" выглядит. Чтоб понятнее был вывод, можно использовать тег <pre>:
PHP:
скопировать код в буфер обмена
  1. echo '<pre>', var_dump($out), '</pre>';
7. Nizz - 23 Мая, 2018 - 16:25:01 - перейти к сообщению
Строитель Извините пожалуйста я сильно затупил. Разобрался. Огромное вам спасибо. С меня +.
8. Строитель - 23 Мая, 2018 - 16:33:18 - перейти к сообщению
Nizz, бывает... )
9. Vladimir Kheifets - 24 Мая, 2018 - 07:28:19 - перейти к сообщению
Nizz пишет:
Здравствуйте. Помогите как можно реализовать дублирование элементов массива в соответствующем виде. Опишу как это должно выглядеть:

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

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


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

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


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

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

Удачи!
10. Nizz - 24 Мая, 2018 - 10:40:33 - перейти к сообщению
Vladimir Kheifets спасибо за помощь. Я пробовал array_merge так же как и array_merge_recursive. Но у меня все-равно получался рекурсивный результат. А вот применить
- не догадался. Спасибо за просвещение.

 

Powered by ExBB FM 1.0 RC1