Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Можно ли в существующем массиве изменить ключ элемента?
Такое разумеется не сработало:
$k = '123';
$v = &$k;
$a = [$v=>&$v];
print_r([$k,$v,$a]);

$k = '321';
print_r([$k,$v,$a]);

Ну а [&$v=>&$v] не компилируется.
Есть какие-нибудь обходные способы?
Пока что наиболее близкое получилось такое:
$new = '321';
$old = '123';
$a[$new] = &$a[$old];
unset($a[$old]);
print_r([$k,$v,$a]);
30 дек 18, 13:16    [21776853]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Karbafos
Member

Откуда:
Сообщений: 454
зачем?
31 дек 18, 00:38    [21777063]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
$map['newkey'] = $map['oldkey'];
unset($map['oldkey']);


в компах нет никакой "магии"
всё есть "последовательность байтов" (из 0/1), а на нижнем уровне просто набор инструкций - куда чего в памяти переместить/посчитать
31 дек 18, 03:05    [21777071]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13505
полудух,

ТС такой же вариант написал, и даже лучше.
31 дек 18, 08:34    [21777090]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
Hett
полудух,

ТС такой же вариант написал, и даже лучше.

это?
автор
$a[$new] = &$a[$old];
unset($a[$old]);

рановато вы праздновать начали Картинка с другого сайта.
31 дек 18, 08:51    [21777091]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
или это: $a = [$v=>&$v]; Картинка с другого сайта.

зы: а ещё у него в 2 раза больше строк
31 дек 18, 08:53    [21777092]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
полудух
$map['newkey'] = $map['oldkey'];
unset($map['oldkey']);


Так себе решение.
Такой способ очевиден, он далеко не лучший.
31 дек 18, 19:22    [21777209]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Alibek B.
он далеко не лучший
В каком отношении не лучший и почему, что конкретно в этом способе плохо?
31 дек 18, 19:36    [21777215]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
а) Не сохраняет порядок элементов.
б) Копирует элемент массива вместо копирования ссылки на элемент.
31 дек 18, 21:41    [21777234]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
вы удаляете этот элемент, какая ещё ссылка
31 дек 18, 21:47    [21777235]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Alibek B.,

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

б) Об этом (клонирование или дублирование фрагмента памяти, содержащего данные) где-то явно сказано или Вы смотрели исходники PHP в части манипуляций с элементами массива?
31 дек 18, 22:24    [21777246]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
полудух
вы удаляете этот элемент, какая ещё ссылка

Это заблуждение.
unset не удаляет содержимое элемента.
31 дек 18, 23:23    [21777252]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
vkle
Об этом (клонирование или дублирование фрагмента памяти, содержащего данные) где-то явно сказано

http://php.net/manual/ru/language.references.whatdo.php
31 дек 18, 23:25    [21777253]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
vkle
Но оно никак не отвечает на вопрос о том, что плохо в этом способе или что хорошо.

Мне - отвечает.
Вопрос был в том, как поменять ключ.
При чистом изменении ключа сам массив меняться не должен, равно как порядок элементов.
31 дек 18, 23:29    [21777257]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Alibek B.
vkle
Об этом (клонирование или дублирование фрагмента памяти, содержащего данные) где-то явно сказано

http://php.net/manual/ru/language.references.whatdo.php
При чем тут ссылки то? Хотя, если хотите использовать ссылки, то там как раз сказано:
обе переменные указывают на одни и те же данные и никакого копирования не происходит

Однако, раз уж говорим тут о присваивании вида $b = $a, то для скалярных переменных - в мануале смотрите тут http://php.net/manual/ru/features.gc.refcounting-basics.php Пример #3. Таки ссылка добавляется.
Для объектов происходит присваивание по ссылке, об этом явно сказано тут: http://php.net/manual/ru/language.operators.assignment.php
Таким образом, насчет копирования Вы ошибаетесь в любом случае.

Alibek B.
При чистом изменении ключа сам массив меняться не должен, равно как порядок элементов.
Вполне возможно, если в ЯП присутствует функция, которая именно так работает. Но, увы. Несмотря на довольно обширный набор функций PHP для работы с массивами http://php.net/manual/ru/book.array.php
1 янв 19, 00:26    [21777262]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
Alibek B.
полудух
вы удаляете этот элемент, какая ещё ссылка

Это заблуждение.
unset не удаляет содержимое элемента.

http://fi2.php.net/manual/ru/function.unset.php
Пример #1 Пример использования unset()

<?php
// удаляем одну переменную
unset($foo);

// удаляем один элемент массива
unset($bar['quux']);

// удаляем несколько переменных
unset($foo1, $foo2, $foo3);
?>

// удаляем один элемент массива
1 янв 19, 06:15    [21777299]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Заблуждение не перестает быть таковым, независимо от количества повторений.

$lazarus = ['a'=>['melchior', 'balthasar', 'casper']];
print_r(['before',$lazarus]);
$undead = &$lazarus['a'];
unset($lazarus['a']);
$undead[] = 'wonder';
print_r(['dead',$lazarus]);
$lazarus['b'] = $undead;
print_r(['raising',$lazarus]);

Посоветую читать англоязычную документацию.
И посмотреть в словарях значения слов remove и destroy.
1 янв 19, 08:48    [21777301]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
полудух
Alibek B.
пропущено...

Это заблуждение.
unset не удаляет содержимое элемента.

http://fi2.php.net/manual/ru/function.unset.php
Пример #1 Пример использования unset()

<?php
// удаляем одну переменную
unset($foo);

// удаляем один элемент массива
unset($bar['quux']);

// удаляем несколько переменных
unset($foo1, $foo2, $foo3);
?>


// удаляем один элемент массива
Ну, с Новым годом!
Элемент массива (ссылка на область памяти, где хранится значение) и содержимое элемента массива (область памяти, выделенная для хранения значения) совсем не одно и то же. Вы можете удалить элемент из массива или удалить переменную, но очисткой памяти от неиспользуемых данных занимается механизм Garbage Collection, он же сборщик мусора. Если он включен, конечно.
1 янв 19, 11:22    [21777310]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
Alibek B.
Заблуждение не перестает быть таковым, независимо от количества повторений.

$lazarus = ['a'=>['melchior', 'balthasar', 'casper']];
print_r(['before',$lazarus]);
$undead = &$lazarus['a'];
unset($lazarus['a']);
$undead[] = 'wonder';
print_r(['dead',$lazarus]);
$lazarus['b'] = $undead;
print_r(['raising',$lazarus]);


Посоветую читать англоязычную документацию.
И посмотреть в словарях значения слов remove и destroy.

вы укуренный чтоли там ещё в добавок Картинка с другого сайта.
нахрена вы копируете $lazarus['a'] в отдельную переменную,
а затем эту переменную ставите в $lazarus['b] ?!?
и вуаля - ФОКУС ГОТОВ! Картинка с другого сайта.
при этом $lazarus['a'] там, как и положено, благополучно удалён unset-ом Картинка с другого сайта.

зы: и можете даже ссылку убрать - эффект тот же.

vkle
Ну, с Новым годом!
Элемент массива (ссылка на область памяти, где хранится значение) и содержимое элемента массива (область памяти, выделенная для хранения значения) совсем не одно и то же. Вы можете удалить элемент из массива или удалить переменную, но очисткой памяти от неиспользуемых данных занимается механизм Garbage Collection, он же сборщик мусора. Если он включен, конечно.

угу, счастья, здоровья...
а вдруг прогер внезапно пишет на C++ и САМ удаляет всё за собой? Картинка с другого сайта.

в пхп таки есть ГЦ, но это неважно
Удалён он там физически или ждём ГЦ, а в массиве его уже нет после unset().
1 янв 19, 12:06    [21777317]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
полудух
зы: и можете даже ссылку убрать - эффект тот же.

Смешной ты и необразованный.
$a1 = ['a'=>[1,2,3]];
$a2 = ['a'=>[11,22,33]];
$r1 = $a1['a'];
$r2 = &$a1['a'];
$a1['a'][] = 999;
$a2['a'][] = 999;
unset($a1['a'],$a2['a']);
$a1['b'] = $r1;
$a2['b'] = $r2;
unset($r1,$r2);
print_r([$a1,$a2]);


Array
(
[0] => Array
(
[b] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

)

[1] => Array
(
[b] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 999
)

)

)
1 янв 19, 12:14    [21777318]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Дормедонт Евлампиевич
Member

Откуда:
Сообщений: 83
function array_change_key(&$array, $src, $dst)
{
    $keys = array_keys($array);
    $i = array_flip($keys)[$src];
    $keys[$i] = $dst;
    $array = array_combine($keys, $array);
}


Alibek B., я думаю, Вы бы и самостоятельно додумались до такого грубого решения. Но если так, почему такие вопросы?
1 янв 19, 15:04    [21777338]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Не до такого, как вариант с сохранением порядка элементов я думал использовать range с последующим combine.
Но и это опять же не замена ключа в массиве, а формирование нового массива.
Мне интересно именно изменить ключ. Может быть есть такой способ, просто я его не знаю, так как PHP я использую от случая к случаю и утилитарно.
1 янв 19, 15:27    [21777341]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Что касается задачи, то я пишу скрипт-сервис (работающий как демон), который взаимодействует с внешней системой.
В этом скрипте есть вспомогательный справочник (массив), используемый для быстрого поиска данных пользователей по номеру телефона (номер телефона - ключ). Но в информационной системе у пользователей номер телефона может меняться и в этом случай справочник нужно обновить. При этом по определенным причинам хотелось бы сохранить порядок элементов в справочнике.
1 янв 19, 15:33    [21777343]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 556
Alibek B.
полудух
зы: и можете даже ссылку убрать - эффект тот же.

Смешной ты и необразованный.

а ты тупой, как воробушек.
в примере опят unset() отработал именно так, как и должен был Картинка с другого сайта.
а именно - удалил элементы массива.
надежды на то, что он сотрёт r2 вместе со ссылкой опять же подчёркивают полную безграмотность вопрошающего юнца (даже если допустить, что вместо &$a1 там &$a2)
очень хочется верить, что эти "гениальные" примеры перерастут во что-то стоящее ДО следующего нового года.

Alibek B.
Что касается задачи, то я пишу скрипт-сервис (работающий как демон), который взаимодействует с внешней системой.
В этом скрипте есть вспомогательный справочник (массив), используемый для быстрого поиска данных пользователей по номеру телефона (номер телефона - ключ). Но в информационной системе у пользователей номер телефона может меняться и в этом случай справочник нужно обновить. При этом по определенным причинам хотелось бы сохранить порядок элементов в справочнике.

потому что БД лишний раз дёргать не хочется
ты ещё и коллега, студент Картинка с другого сайта.
причина тут одна - неопытный дурачок кастует самому себе (и людям, что гораздо важнее) палки в колёсах
парсеры иди пиши, а не ИФ, твоя архитектура - говно.
Модератор: За своими словами следите, пожалуйста.
1 янв 19, 16:53    [21777363]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Karbafos
Member

Откуда:
Сообщений: 454
Alibek B.
Что касается задачи, то я пишу скрипт-сервис (работающий как демон), который взаимодействует с внешней системой.
В этом скрипте есть вспомогательный справочник (массив), используемый для быстрого поиска данных пользователей по номеру телефона (номер телефона - ключ). Но в информационной системе у пользователей номер телефона может меняться и в этом случай справочник нужно обновить. При этом по определенным причинам хотелось бы сохранить порядок элементов в справочнике.


Ты не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется.
Тем более, что при перестроении списка ключей связи меняются.
Поиск по ключу хеша это O(1), ему пофиг на порядок, он итак быстрый.

Сравни вывод для
<?php

$a = [
    '012' => '012',
    '123' => '123',
    '456' => '456'
];

$new = '321';
$old = '123';
$a[$new] = &$a[$old];
unset($a[$old]);

print_r($a);


и

<?php

$a = [
    '012' => '012',
    '123' => '123',
    '456' => '456'
];

$new = '321';
$old = '123';
$a[$new] = $a[$old];
unset($a[$old]);

print_r($a);


Они идентичны.

Не нужно без повода использовать &

Вот пример опкодов для

$a[$new] = &$a[$old];

line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
11 3 FETCH_DIM_W $7 !0, !2
4 MAKE_REF $8 $7
5 FETCH_DIM_W $6 !0, !1
6 ASSIGN_REF $6, $8

и

$a[$new] = $a[$old];

line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
11 3 FETCH_DIM_R $7 !0, !2
4 ASSIGN_DIM !0, !1
5 OP_DATA $7

Второй более оптимален в таком варианте.
1 янв 19, 17:24    [21777369]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Karbafos
Второй более оптимален в таком варианте.

Если говорить абстрактно, то видимо да. В Perl хеши вообще неупорядоченны и это обычно не мешает.
Но в моей задаче хранение справочника в массиве это только часть задачи. Мне в определенных случаях нужно использовать исходную последовательность элементов.
Эту последовательность можно получить тремя способами:
1. Изменить ключ - если это вообще возможно, это был бы лучший способ.
2. Пересобрать массив (с использованием range или flip) - надёжно, но неэффективно и теоретически возможны утечки памяти (если GC будет работать недостаточно эффективно).
3. Добавлять элемент с новым ключом (моим способом), а затем сортировать полученный массив с помощью uksort. Но тут под вопросом производительность.
1 янв 19, 17:58    [21777374]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
полудух
парсеры иди пиши, а не ИФ, твоя архитектура - говно.

Видно птицу по полету, а малолетку по помету лексикону.
1 янв 19, 18:03    [21777376]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
Karbafos
Ты не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется.

Это про PHP или Perl?
В PHP массивы прекрасно упорядочиваются.
Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее.
1 янв 19, 18:29    [21777383]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Karbafos
Member

Откуда:
Сообщений: 454
Alibek B.
Karbafos
Ты не можешь сохранить порядок элементов в хэше, никак, это как запрос select из базы без order by, порядок не гарантируется.

Это про PHP или Perl?
В PHP массивы прекрасно упорядочиваются.
Собственно это одно из преимуществ PHP в моем случае, благодаря этой особенности формировать JSON намного проще. В Perl генерация JSON с упорядоченными элементами будет сложнее.


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

В любом случае, если такой вопрос возникает, значит что-то делается неправильно и есть путь более простой.
1 янв 19, 18:44    [21777384]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Alibek B.
1. Изменить ключ - если это вообще возможно, это был бы лучший способ.


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

Просто любопытно, при каких количествах элементов, обновлений, обращений вопрос столь жестко уперся именно в производительность на этапе обновления номера телефона?
1 янв 19, 18:59    [21777389]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Karbafos
Member

Откуда:
Сообщений: 454
vkle
Alibek B.
1. Изменить ключ - если это вообще возможно, это был бы лучший способ.


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

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


судя по всему, вопрос не в производительности, а в порядке элементов в json, где-то он важен,
но если это так, до реально дичь какая-то происходит
1 янв 19, 19:54    [21777398]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Karbafos,

Так я понял, что и то и другое важно. В посте 21777374 про эффективность (впрочем, это понятие весьма расплывчатое) и производительность упоминается. Да и раньше тож.
1 янв 19, 20:13    [21777408]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Alibek B.
Member

Откуда:
Сообщений: 3039
vkle
написать свое расширение PHP с реализацией требуемой функции

Это слишком сложно для меня.
Мне нужно автоматизировать одну задачу без слишком больших трудозатрат.
Чтобы написать свое расширение PHP, нужно слишком глубоко погружаться.

Karbafos
а в порядке элементов в json, где-то он важен, но если это так, до реально дичь какая-то происходит

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

vkle
Так я понял, что и то и другое важно

Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное.
Эффективность — это и производительность (впрочем ее в любом случае хватает), и минимизация использования ресурсов.
Если планируется, что скрипт будет подолгу работать в круглосуточном режиме, то любые массовые манипуляции с массивами могут выливаться в утечки памяти.
1 янв 19, 20:31    [21777416]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
vkle
Member

Откуда: Самара
Сообщений: 14624
Alibek B.
Если это возможно, то лучше всегда написать что-то более эффективное, чем что-то менее эффективное.
Дык, кто же спорит? Нет предела совершенству! :)

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

Alibek B.
скрипт будет подолгу работать в круглосуточном режиме
И что с того, что в круглосуточном? Важно, сколько и каких будет проведено итераций за единицу времени. Так то, не составляет проблем положить sleep() внутрь бесконечного цикла - да хоть год пусть работает, ничего с ним не случится. :) Ну а если серьезно, были у меня долгоиграйки на пхп, работавшие от нескольких часов до пары недель с периодичностью итераций порядка нескольких секунд, с обращением к внешним ресурсам (мускуль, мемкеш, файлы, что-то по http). В начале главного цикла инициализация всех внутренних переменных, в основном. Ну и корректная обработка недоступности ресурсов. И ничего особенного, никто не помер и память не выжрал. Появилась бы какая серьезная проблема в долгоиграйстве - ну перезапустить можно раза два или три за сутки. Этого никто вообще не заметит! Конечно, если только скрипт не будет пол-часа инициализироваться. :) Вот если ресурсов на пять минут работы не хватает - тогда да, тогда серьезная проблема.
1 янв 19, 21:44    [21777436]     Ответить | Цитировать Сообщить модератору
 Re: PHP - поменять ключ в массиве  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1568
прям какая-то фобия утечек...

потраченное на решение задачи - тоже ресурс

+++
2 янв 19, 11:59    [21777540]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / PHP, Perl, Python Ответить