在foreach循环中调用函数调用与变量中的结果相比有什么不同?

Moa*_*oak 5 php foreach

两者之间的行为有什么不同

foreach(anyfunction($array) as $value){ //...do something
Run Code Online (Sandbox Code Playgroud)

$values = anyfunction($array);
foreach($values as $value){//...do something
Run Code Online (Sandbox Code Playgroud)

我99%肯定没有区别,但是在查看开源项目的源代码时,我主要找到第二个变体.

Cod*_*gry 2

这是一个范围的事情。使用生成的临时变量function_call()应该在结束后被丢弃(不是 100% 垃圾收集器在 PHP 中的工作方式,但我 99% 确定循环结束时内存会被释放loop。人$values会活得更久。

问题在于你是否需要它来超越你的循环。如果不这样做,请unset($values)在循环后手动(或当您不再需要它时)或仅将其用作循环中的函数调用。

如果$values需要一点内存并且在循环之外不需要,则选择第一个变体。只要您的函数名称有意义,就不是可读性的问题。

PS有时C++我们用任意{...}内部代码控制变量范围,因为之后创建的变量{在点击时会被销毁}