循环中的“unset()”vs“= NULL”

时间:2013-11-14 15:58:16

标签: php memory-management

我有一个类似

的循环
    $items        = array(10, 12, 13, 23, 34, 32, 11, 98);
    $items_single = array();

    foreach ($items as $item) {
        $item_data = "SELECT * FROM MY_TABLE WHERE ITEM_ID = $item";
        // Don't worry, this is just a demo query, I don't query like this

        array_push($items_single, $item_data);

        unset($item_data);
//      $item_data = NULL;
    }

哪种方式可以更好地释放$item_data内存?虽然unset()似乎更合乎逻辑,但我认为这种方式不会马上取消它,但是会把它放在收集之类的东西可能会在循环之后被调用......? (这将首先使unset()失败)。虽然= NULL似乎正在做理想的事情,但是它会花费一些时间,这实际上可能会减慢循环。

另外,如果我什么都不做,那么php每次都会创建一个新的变量(这将消耗内存),然后尝试删除旧的变量并替换为新的变量(我猜它有效)这样)。

0 个答案:

没有答案