powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - поменять ключ в массиве
10 сообщений из 35, страница 2 из 2
PHP - поменять ключ в массиве
    #39755389
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KarbafosВторой более оптимален в таком варианте.
Если говорить абстрактно, то видимо да. В Perl хеши вообще неупорядоченны и это обычно не мешает.
Но в моей задаче хранение справочника в массиве это только часть задачи. Мне в определенных случаях нужно использовать исходную последовательность элементов.
Эту последовательность можно получить тремя способами:
1. Изменить ключ - если это вообще возможно, это был бы лучший способ.
2. Пересобрать массив (с использованием range или flip) - надёжно, но неэффективно и теоретически возможны утечки памяти (если GC будет работать недостаточно эффективно).
3. Добавлять элемент с новым ключом (моим способом), а затем сортировать полученный массив с помощью uksort. Но тут под вопросом производительность.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755391
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухпарсеры иди пиши, а не ИФ, твоя архитектура - говно.
Видно птицу по полету, а малолетку по помету лексикону.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755394
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KarbafosТы не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется.
Это про PHP или Perl?
В PHP массивы прекрасно упорядочиваются.
Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755395
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.KarbafosТы не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется.
Это про PHP или Perl?
В PHP массивы прекрасно упорядочиваются.
Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее.

Речь про php и его массивы, которые практически в любом виде -- хеши.
Новый ключ -- новое распределение внутри бакетов, новый порядок. Речь разумеется об оригинальном массиве, а не отсортированном после изменения.

В любом случае, если такой вопрос возникает, значит что-то делается неправильно и есть путь более простой.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755396
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.1. Изменить ключ - если это вообще возможно, это был бы лучший способ.

Если все так плохо, что остальные способы не годятся, то несколько фантастический вариант - написать свое расширение PHP с реализацией требуемой функции. Непросто, конечно, да и поддерживать его придется.

Просто любопытно, при каких количествах элементов, обновлений, обращений вопрос столь жестко уперся именно в производительность на этапе обновления номера телефона?
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755404
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleAlibek B.1. Изменить ключ - если это вообще возможно, это был бы лучший способ.

Если все так плохо, что остальные способы не годятся, то несколько фантастический вариант - написать свое расширение PHP с реализацией требуемой функции. Непросто, конечно, да и поддерживать его придется.

Просто любопытно, при каких количествах элементов, обновлений, обращений вопрос столь жестко уперся именно в производительность на этапе обновления номера телефона?

судя по всему, вопрос не в производительности, а в порядке элементов в json, где-то он важен,
но если это так, до реально дичь какая-то происходит
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755410
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Karbafos,

Так я понял, что и то и другое важно. В посте 21777374 про эффективность (впрочем, это понятие весьма расплывчатое) и производительность упоминается. Да и раньше тож.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755411
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleнаписать свое расширение PHP с реализацией требуемой функции
Это слишком сложно для меня.
Мне нужно автоматизировать одну задачу без слишком больших трудозатрат.
Чтобы написать свое расширение PHP, нужно слишком глубоко погружаться.

Karbafosа в порядке элементов в json, где-то он важен, но если это так, до реально дичь какая-то происходит
Тут наложение двух особенностей.
Во-первых — мне нужно сделать интеграцию двух систем, своей и внешней, и своя не поддерживает события. Поэтому вместо обработчика события я периодически получаю с двух систем наборы данных, сравниваю их между собой и формирую задания на синхронизацию наборов.
Во-первых — мне нужно работать с внешним REST-сервисом, в котором стиль REST несколько расширяется — в GET/POST можно передать массив элементов и запрос вернет результат для переданного массива (вместо построчной обработки).
Поэтому в итоге мне нужно направить на внешний сервер один массив данных, а затем другой, в котором сущности перечислены в том же порядке.

vkleТак я понял, что и то и другое важно
Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное.
Эффективность — это и производительность (впрочем ее в любом случае хватает), и минимизация использования ресурсов.
Если планируется, что скрипт будет подолгу работать в круглосуточном режиме, то любые массовые манипуляции с массивами могут выливаться в утечки памяти.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755423
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное.Дык, кто же спорит? Нет предела совершенству! :)

Alibek B.минимизация использования ресурсовПожалуй, дополню.
Ваше время, потраченное на решение задачи - тоже ресурс. Невосполнимый. Потратив час на решение, Вы не сможете использовать этот самый час в каких-то других целях. При таком раскладе эффективным решением будет второй или третий вариант, раз уж с производительностью нет особых проблем. Или, даже четвертый, где новый массив будет создан с нуля вместо старого. Заодно и природную лень можно потешить - не придется, скорее всего, решать проблему утечки памяти, если таковая вылезет в этом месте.
К тому же, начальству до фонаря, скорее всего, как именно решена задача. Будет готово к вечеру - "отлично!", через два дня "ну ладно, хорошо", а ежле неделю искать красивое решение - "чего вы там возюкаетесь??". Ну как-то так.

Alibek B.скрипт будет подолгу работать в круглосуточном режимеИ что с того, что в круглосуточном? Важно, сколько и каких будет проведено итераций за единицу времени. Так то, не составляет проблем положить sleep() внутрь бесконечного цикла - да хоть год пусть работает, ничего с ним не случится. :) Ну а если серьезно, были у меня долгоиграйки на пхп, работавшие от нескольких часов до пары недель с периодичностью итераций порядка нескольких секунд, с обращением к внешним ресурсам (мускуль, мемкеш, файлы, что-то по http). В начале главного цикла инициализация всех внутренних переменных, в основном. Ну и корректная обработка недоступности ресурсов. И ничего особенного, никто не помер и память не выжрал. Появилась бы какая серьезная проблема в долгоиграйстве - ну перезапустить можно раза два или три за сутки. Этого никто вообще не заметит! Конечно, если только скрипт не будет пол-часа инициализироваться. :) Вот если ресурсов на пять минут работы не хватает - тогда да, тогда серьезная проблема.
...
Рейтинг: 0 / 0
PHP - поменять ключ в массиве
    #39755464
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прям какая-то фобия утечек...

потраченное на решение задачи - тоже ресурс
+++
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - поменять ключ в массиве
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]