在PHP中,有引用的foreach比没有引用的foreach快吗? 请考虑这2个代码:

在PHP中,有引用的foreach比没有引用的foreach快吗? 请考虑这2个代码:,php,pass-by-reference,Php,Pass By Reference,密钥查找: foreach ($array as $key => $value){ $array[$key] = "New Value"; } 参考: foreach ($array as $key => &$value){ $value = "New Value"; } // Make sure no unwanted changes are committed through this reference unset($value) 我对这一点的理解是,

密钥查找:

foreach ($array as $key => $value){
   $array[$key] = "New Value";
}
参考:

foreach ($array as $key => &$value){
    $value = "New Value";
}
// Make sure no unwanted changes are committed through this reference
unset($value)

我对这一点的理解是,由于额外的哈希表查找操作,具有键查找的第一个示例将更慢。这是正确的吗?使用参考是更好的选择吗?

设置一个测试,并自己证明。。。。创建一个大数组,运行循环,计时,看看哪个更快。我希望得到一个解释,说明在每种情况下如何访问数组值,而不仅仅是速度测试。--检查操作码,它应该提供一些线索。您的引用循环应该是
foreach($array as&$value){}
,否则它仍然获取密钥?无论哪种方式,两者之间的性能都可以忽略不计,更重要的是循环中发生了什么。另外,我认为不需要取消设置
$value
,因为它是在
foreach
循环中定义的,使其具有本地范围。@Xorifelse,仅供参考。设置一个测试并自己验证它。。。。创建一个大数组,运行循环,计时,看看哪个更快。我希望得到一个解释,说明在每种情况下如何访问数组值,而不仅仅是速度测试。--检查操作码,它应该提供一些线索。您的引用循环应该是
foreach($array as&$value){}
,否则它仍然获取密钥?无论哪种方式,两者之间的性能都可以忽略不计,更重要的是循环中发生了什么。另外,我认为不需要取消设置
$value
,因为它是在
foreach
循环中定义的,使其具有本地作用域。@Xorifelse,仅供参考。