Это простой вопрос программирования, связанный с моим незнанием того, как 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