Сохраняет ли сброс значений массива во время итерации в памяти?

Это простой вопрос программирования, связанный с моим незнанием того, как PHP обрабатывает копирование и отключение массива во время foreach петля. Это похоже на то, что у меня есть массив, который приходит ко мне из внешнего источника, отформатированный так, как я хочу изменить. Простым примером может быть:

$myData = array('Key1' => array('value1', 'value2'));

Но то, что мне нужно, будет примерно таким:

$myData = array([0] => array('MyKey' => array('Key1' => array('value1', 'value2'))));

Итак, я беру первый $ myData и форматирую его как второй $ myData . Меня полностью устраивает мой алгоритм форматирования. Мой вопрос заключается в том, чтобы найти способ сохранить память, поскольку эти массивы могут стать немного громоздкими. Итак, во время цикла foreach я копирую текущее значение (я) массива в новый формат, а затем сбрасываю значение, с которым я работаю, из исходного массива. Например:

$formattedData = array();
foreach ($myData as $key => $val) {
    // do some formatting here, copy to $reformattedVal

    $formattedData[] = $reformattedVal;

    unset($myData[$key]);
}

Является ли здесь вызов unset () хорошей идеей? Т.е. экономится ли память, поскольку я скопировал данные и исходное значение больше не требуется? Или PHP автоматически собирает данные в мусоре, поскольку я не ссылаюсь на него в любом последующем коде?

Код работает нормально, и до сих пор мои наборы данных были слишком маленькими по размеру, чтобы проверить различия в производительности. Я просто не знаю, настраиваюсь ли я позже на какие-то странные ошибки или проблемы с процессором.

Спасибо за любые идеи.
во время цикла foreach я копирую текущее значение (я) массива в новый формат, а затем сбрасываю значение, с которым я работаю, из исходного массива. Например:

$formattedData = array();
foreach ($myData as $key => $val) {
    // do some formatting here, copy to $reformattedVal

    $formattedData[] = $reformattedVal;

    unset($myData[$key]);
}

Является ли здесь вызов unset () хорошей идеей? Т.е. экономится ли память, поскольку я скопировал данные и исходное значение больше не требуется? Или PHP автоматически собирает данные в мусор, поскольку я не ссылаюсь на него в любом последующем коде?

Код работает нормально, и до сих пор мои наборы данных были слишком маленькими по размеру, чтобы проверить различия в производительности. Я просто не знаю, настраиваюсь ли я позже на какие-то странные ошибки или проблемы с процессором.

Спасибо за любые идеи.
во время цикла foreach я копирую текущее значение (я) массива в новый формат, а затем сбрасываю значение, с которым я работаю, из исходного массива. Например:

$formattedData = array();
foreach ($myData as $key => $val) {
    // do some formatting here, copy to $reformattedVal

    $formattedData[] = $reformattedVal;

    unset($myData[$key]);
}

Является ли здесь хорошей идеей вызов unset () ? То есть экономит ли он память, поскольку я скопировал данные и исходное значение больше не требуется? Или PHP автоматически собирает данные в мусор, поскольку я не ссылаюсь на него в любом последующем коде?

Код работает нормально, и до сих пор мои наборы данных были слишком маленькими по размеру, чтобы проверить различия в производительности. Я просто не знаю, настраиваюсь ли я позже на какие-то странные ошибки или проблемы с процессором.

Спасибо за любые идеи.

$formattedData = array();
foreach ($myData as $key => $val) {
    // do some formatting here, copy to $reformattedVal

    $formattedData[] = $reformattedVal;

    unset($myData[$key]);
}

Можно ли здесь использовать вызов unset () ? Т.е. экономится ли память, поскольку я скопировал данные и исходное значение больше не требуется? Или PHP автоматически собирает данные в мусор, поскольку я не ссылаюсь на него в любом последующем коде?

Код работает нормально, и до сих пор мои наборы данных были слишком маленькими по размеру, чтобы проверить различия в производительности. Я просто не знаю, настраиваюсь ли я позже на какие-то странные ошибки или проблемы с процессором.

Спасибо за любые идеи.

$formattedData = array();
foreach ($myData as $key => $val) {
    // do some formatting here, copy to $reformattedVal

    $formattedData[] = $reformattedVal;

    unset($myData[$key]);
}

Можно ли здесь использовать вызов unset () ? Т.е. экономится ли память, поскольку я скопировал данные и исходное значение больше не требуется? Или PHP автоматически собирает данные в мусор, поскольку я не ссылаюсь на него в любом последующем коде?

Код работает нормально, и до сих пор мои наборы данных были слишком маленькими по размеру, чтобы проверить различия в производительности. Я просто не знаю, настраиваюсь ли я позже на какие-то странные ошибки или проблемы с процессором.

Спасибо за любые идеи.
-sR

8
задан Andy Lester 12 January 2011 в 22:53
поделиться