Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
У меня есть ассоциированный массив и мне нужно вставить элемент в середину. Если использовать array_splice($array, $pos, 0, $value), то значение вставляется, но в массиве слетают ключи. И кроме того, нет возможности указать ключ для вставляемого значения. Сейчас я использую такую функцию (пока не заменил на два array_slice с preserve_keys): Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. А можно ли обойтись встроенной функцией? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 18:59 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B.У меня есть ассоциированный массив и мне нужно вставить элемент в середину.Однако, у ассоциативного массива в явном виде нет ни начала, ни конца, ни середины. Все элементы определены именами ключей и слетать при вставке там нечему. Или Ваш массив не ассоциативный, а простой, с порядковыми индексами. Alibek B.нет возможности указать ключ для вставляемого значения.Гхм... Простите, но каким-то образом Вы знаете, куда именно нужно вставить элемент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 19:33 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
В PHP массивы могут быть одновременно и позиционными, и ассоциативными. Это развращает, но такая особенность оказалась удобной для одной моей задачи. Вот эта функция полностью решает мою задачу: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Но вдруг можно сделать то же самое встроенными функциями (array_splice или array_merge/array_slice)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 21:04 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B.В PHP массивы могут быть одновременно и позиционными, и ассоциативными.Ага, есть такое. Удвоенный набор элементов под разными индексами - половина под числовыми (позиционными), копия под строковыми (ассоциативными) ключами. С ассоциативными ключами проблем нет, а значения позиционных ключей переназначить придётся от конца+1 до позиции "вставки" элемента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 22:43 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Однако, зачем понадобилось держать для работы два комплекта значений - не понятно. ИМХО проще использовать вспомогательный массив соответствия имён ключей и числовых индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 22:50 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
автору ассоциативного массива в явном виде нет ни начала, ни конца, ни середины таки есть . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 04:50 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавтору ассоциативного массива в явном виде нет ни начала, ни конца, ни середины таки есть .Ну если только в этом смысле ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 09:15 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
vkleАга, есть такое. Удвоенный набор элементов под разными индексами - половина под числовыми (позиционными), копия под строковыми (ассоциативными) ключами. Нет, набор не удвоенный (во всяком случае в var_dump дублирования нет), но тем не менее у вставляемых ключей сохраняется порядок. Это, видимо, фича PHP, но весьма удобная, когда нужно работать с JSON и некоторыми другими структурами, где важен порядок элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 10:15 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B., Код: php 1. 2. 3. 4. 5. 6. 7. это можно заменить на: Код: php 1. 2. 3. 4. 5. 6. а вообще. задача как всегда - странная. если важен порядок элементов, то нужно просто использовать цифровые индексы. говно-архитектура рождает говнокод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 10:34 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
да и зачем перебирать вручную когда можно Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 10:51 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
r uэто можно заменить на: Нет, у меня индексы нумеруются с единицы. r uесли важен порядок элементов, то нужно просто использовать цифровые индексы. Мне нужен порядок элементов и быстрый доступ по ключу. В Perl я бы использовал хеш и индексный массив. Но если PHP позволяет это совместить, почему бы не использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:29 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B.Нет, у меня индексы нумеруются с единицы. каков тогда смысл этих строк? Код: php 1. 2. получается что это условие никогда не выполнится. вот я и советую тогда его убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:38 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Новый элемент вставляется в указанную позицию (с учетом того, что нумерация начинается с единицы). Если указана вставка в позицию 0, то элемент вставляется в начало списка. Практически то же самое, как если бы был указан индекс 1, но в случае пустого массива содержимое цикла выполняться не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:44 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B., а если сразу известно что мы попали на индекс. и вставили элемент в самое начало, то нет смысла перебирать весь массив и внутри делать проверку которая уже точно никогда не сработает.... кароче ясно. устраивает - пользуйся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:51 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
r uа если сразу известно что мы попали на индекс. и вставили элемент в самое начало, то нет смысла перебирать весь массив и внутри делать проверку которая уже точно никогда не сработает.... Да, проверку делать не нужно. Но без цикла все равно не обойтись, чтобы скопировать остальные значения. Правда можно цикл заменить на array_merge/array_slice; вчера я это пробовал, но почему-то слетали ключи, несмотря на то, что я указывал preserve_keys=true. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 12:06 |
|
||
|
PHP - можно ли вставить в массив строку с сохранением ключей?
|
|||
|---|---|---|---|
|
#18+
Alibek B.vkleАга, есть такое. Удвоенный набор элементов под разными индексами - половина под числовыми (позиционными), копия под строковыми (ассоциативными) ключами. Нет, набор не удвоенный (во всяком случае в var_dump дублирования нет), но тем не менее у вставляемых ключей сохраняется порядок.Если порядок сохраняется, а набор не удвоенный - то это обычный ассоциативный массив. Не? Потому, вот тут что-то не схождится: Alibek B.В PHP массивы могут быть одновременно и позиционными, и ассоциативными. Alibek B.Нет, набор не удвоенный (во всяком случае в var_dump дублирования нет) Тогда вопрос, как создать массив, который обладает одновременно свойствами двух разных видов, но при этом без дубликатов? Например, делаем обычный ассоциативный массив и пытаемся обратиться к его элементу по индексу: Код: php 1. 2. 3. 4. Что получим? А получим вот что: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. На мой взгляд, нет тут в чистом виде позиционных свойств (нулевой, первый, второй, третий). Но, тем не менее, есть свойства списочного характера (первый, следующий, следующий, следующий). Alibek B.Мне нужен порядок элементовВот тут следует заметить, что элементы массива фиксируются в памяти последовательно по мере их создания. Соответственно, и при последовательном обращении к элементам массива порядок выдачи сохраняется ввиду последовательного чтения таблицы переменных. В таком контексте, вставка элемента в середину возможно только при пересоздании массива с требуемым порядком следования элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 23:56 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39027595&tid=1461593]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 436ms |

| 0 / 0 |
