|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
KarbafosВторой более оптимален в таком варианте. Если говорить абстрактно, то видимо да. В Perl хеши вообще неупорядоченны и это обычно не мешает. Но в моей задаче хранение справочника в массиве это только часть задачи. Мне в определенных случаях нужно использовать исходную последовательность элементов. Эту последовательность можно получить тремя способами: 1. Изменить ключ - если это вообще возможно, это был бы лучший способ. 2. Пересобрать массив (с использованием range или flip) - надёжно, но неэффективно и теоретически возможны утечки памяти (если GC будет работать недостаточно эффективно). 3. Добавлять элемент с новым ключом (моим способом), а затем сортировать полученный массив с помощью uksort. Но тут под вопросом производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 17:58 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
полудухпарсеры иди пиши, а не ИФ, твоя архитектура - говно. Видно птицу по полету, а малолетку по помету лексикону. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 18:03 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
KarbafosТы не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется. Это про PHP или Perl? В PHP массивы прекрасно упорядочиваются. Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 18:29 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
Alibek B.KarbafosТы не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется. Это про PHP или Perl? В PHP массивы прекрасно упорядочиваются. Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее. Речь про php и его массивы, которые практически в любом виде -- хеши. Новый ключ -- новое распределение внутри бакетов, новый порядок. Речь разумеется об оригинальном массиве, а не отсортированном после изменения. В любом случае, если такой вопрос возникает, значит что-то делается неправильно и есть путь более простой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 18:44 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
Alibek B.1. Изменить ключ - если это вообще возможно, это был бы лучший способ. Если все так плохо, что остальные способы не годятся, то несколько фантастический вариант - написать свое расширение PHP с реализацией требуемой функции. Непросто, конечно, да и поддерживать его придется. Просто любопытно, при каких количествах элементов, обновлений, обращений вопрос столь жестко уперся именно в производительность на этапе обновления номера телефона? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 18:59 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
vkleAlibek B.1. Изменить ключ - если это вообще возможно, это был бы лучший способ. Если все так плохо, что остальные способы не годятся, то несколько фантастический вариант - написать свое расширение PHP с реализацией требуемой функции. Непросто, конечно, да и поддерживать его придется. Просто любопытно, при каких количествах элементов, обновлений, обращений вопрос столь жестко уперся именно в производительность на этапе обновления номера телефона? судя по всему, вопрос не в производительности, а в порядке элементов в json, где-то он важен, но если это так, до реально дичь какая-то происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 19:54 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
Karbafos, Так я понял, что и то и другое важно. В посте 21777374 про эффективность (впрочем, это понятие весьма расплывчатое) и производительность упоминается. Да и раньше тож. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 20:13 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
vkleнаписать свое расширение PHP с реализацией требуемой функции Это слишком сложно для меня. Мне нужно автоматизировать одну задачу без слишком больших трудозатрат. Чтобы написать свое расширение PHP, нужно слишком глубоко погружаться. Karbafosа в порядке элементов в json, где-то он важен, но если это так, до реально дичь какая-то происходит Тут наложение двух особенностей. Во-первых — мне нужно сделать интеграцию двух систем, своей и внешней, и своя не поддерживает события. Поэтому вместо обработчика события я периодически получаю с двух систем наборы данных, сравниваю их между собой и формирую задания на синхронизацию наборов. Во-первых — мне нужно работать с внешним REST-сервисом, в котором стиль REST несколько расширяется — в GET/POST можно передать массив элементов и запрос вернет результат для переданного массива (вместо построчной обработки). Поэтому в итоге мне нужно направить на внешний сервер один массив данных, а затем другой, в котором сущности перечислены в том же порядке. vkleТак я понял, что и то и другое важно Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное. Эффективность — это и производительность (впрочем ее в любом случае хватает), и минимизация использования ресурсов. Если планируется, что скрипт будет подолгу работать в круглосуточном режиме, то любые массовые манипуляции с массивами могут выливаться в утечки памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 20:31 |
|
PHP - поменять ключ в массиве
|
|||
---|---|---|---|
#18+
Alibek B.Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное.Дык, кто же спорит? Нет предела совершенству! :) Alibek B.минимизация использования ресурсовПожалуй, дополню. Ваше время, потраченное на решение задачи - тоже ресурс. Невосполнимый. Потратив час на решение, Вы не сможете использовать этот самый час в каких-то других целях. При таком раскладе эффективным решением будет второй или третий вариант, раз уж с производительностью нет особых проблем. Или, даже четвертый, где новый массив будет создан с нуля вместо старого. Заодно и природную лень можно потешить - не придется, скорее всего, решать проблему утечки памяти, если таковая вылезет в этом месте. К тому же, начальству до фонаря, скорее всего, как именно решена задача. Будет готово к вечеру - "отлично!", через два дня "ну ладно, хорошо", а ежле неделю искать красивое решение - "чего вы там возюкаетесь??". Ну как-то так. Alibek B.скрипт будет подолгу работать в круглосуточном режимеИ что с того, что в круглосуточном? Важно, сколько и каких будет проведено итераций за единицу времени. Так то, не составляет проблем положить sleep() внутрь бесконечного цикла - да хоть год пусть работает, ничего с ним не случится. :) Ну а если серьезно, были у меня долгоиграйки на пхп, работавшие от нескольких часов до пары недель с периодичностью итераций порядка нескольких секунд, с обращением к внешним ресурсам (мускуль, мемкеш, файлы, что-то по http). В начале главного цикла инициализация всех внутренних переменных, в основном. Ну и корректная обработка недоступности ресурсов. И ничего особенного, никто не помер и память не выжрал. Появилась бы какая серьезная проблема в долгоиграйстве - ну перезапустить можно раза два или три за сутки. Этого никто вообще не заметит! Конечно, если только скрипт не будет пол-часа инициализироваться. :) Вот если ресурсов на пять минут работы не хватает - тогда да, тогда серьезная проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 21:44 |
|
|
start [/forum/topic.php?fid=23&gotonew=1&tid=1460047]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
7ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 128ms |
0 / 0 |