« MSSQL - убожествоКонцентратор доступа @Net ATLAC (beta7) - динамика нагрузки (дополнено 01.03.2010) »

8 комментариев

  1. § dark написан :
    *****
    Для читателей, которым будет неочевидно:
    foreach($myArray as &$value) {
    # code here
    }
    тоже работает.

    При применении ссылки отпадает надобность возвращать ещё и ключ во многих случаях
  2. § Alex® Email написан :
    Уточнение -

    foreach ($myArray as &$value){
    # code here
    } unset($value);

    иначе при неудачном стечении обстоятельств потом можно будет долго и весело искать неожиданные грабли с неверным значением в массиве.
  3. § dark написан :
    *****
    Да, хорошее замечание.
    Основной смысл поста в том, что ключ зачастую не нужен и без него всё вполне будет работать.
  4. § dark написан :
    Да, кстати, по-моему, до любого изменения $value его значение и так(в смысле даже когда без ссылки) не будет копироваться.

    "PHP is smart enough not to copy the actual variable container when it is not necessary."
    http://ru2.php.net/manual/en/features.gc.refcounting-basics.php

    Делал практические тесты, которые показывали одинаковые результаты по времени, когда используется ссылка и когда её нет.
  5. § Alex® Email написан :
    Мои практические тесты почти всегда показывали обратное. В частности, разница в многократном проходе над массивами из 20000+ элементов была где-то порядка 35 секунд без & и порядка 15 секунд с &.

    Надо будет протестировать еще несколько раз.

    Правда, у меня всегда достаточно специфичная обработка, очень часто - с вызовами функций над элементами массива.

    Возможность изменения массива в проходе тоже лишней не бывает.
  6. § dark написан :
    Ну так описанный тут способ уже как минимум ради возможности изменения во время прохода целесообразно использовать :)

    А так я тестировал кажется на массиве из 100к элементов, выполняя в цикле несложные операции (не меняя $value, чтобы было так, как в мануале). И так, и так получалось 3 с копейками секунды.
  7. § Алиса написан :
    *****
    Этот метод можно взять на заметку
  8. § Levik Email написан :
    *****
    Спасибо, очень полезная "фишка". Однако, если не ошибаюсь, в php 4 foreach по ссылке не работает...

Оставить комментарий


Ваш email адрес не будет показан на сайте.

Ваш URL будет показан.
ПлохоПревосходно
(Заменить прерывания строк на <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)