对foreach中使用的未设置局部变量的最佳实践

时间:2017-05-30 12:58:19

标签: php foreach unset

我有以下代码:

$strings = ...
$chars = array();

foreach ($strings as $s) {
    $firstChar = mb_substr($s, 0, 1, 'utf-8');

    if (!in_array($firstChar , $chars)) {
        array_push($chars, $firstChar);
    }
    // unset($firstChar); // HERE?
}

// unset($firstChar); // HERE?

我应该在哪里放置unset变量的firstChar?在foreach里面?外?有这样做的最佳做法吗?

在像Java o C#这样的语言中,firstChar应该在每次迭代结束时死亡,但在PHP中,这种变量没有单独的范围(如果我错了,请纠正我,我'我仍是php的新手

我想要第一个unset,但我想听听你的想法: - )

谢谢!

2 个答案:

答案 0 :(得分:0)

我把它放在最后,没有必要在每次迭代结束时取消它,只是在迭代开始时重新分配它。

但一般来说,如果你在循环之后不打算使用firstChar,为什么要取消它呢?

答案 1 :(得分:0)

在你的代码中,如果在foreach循环内部或foreach循环之后使用unset,则逻辑中不会发生任何影响,因为你在每次迭代中初始化了这个$ firstChar变量。

但是在foreach循环之后使用unset,因为如果你在for循环中使用unset,则需要几毫秒的时间来取消设置该变量。