我想知道在您仅读取变量时是否将其作为按引用传递的优良作法,还是应始终将其作为值传递。
引用传递示例:
$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;
function &do_my_hash(&$value){
return md5($value);
}
传递值的示例:
$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;
function do_my_hash($value){
return md5($value);
}
哪个更好 ?例如,如果我要循环运行1000次?
循环示例:
for($i = 0 ; $i < 1000 ; $i++){
$a = 'Fish & Chips '.$i;
echo do_my_hash($a);
}
如果您打算传递一个 值 (因此该函数不会对其进行修改) ,则没有理由通过引用传递它:这只会使您的代码更难以理解,因为人们会认为“
此函数可以修改我将要修改的内容。传递给它-哦,它没有修改? ”
在您提供的示例中,do_my_hash
函数不会修改传递给它的 值 ;因此,我不会使用参考。
人们使用引用的另一个原因是因为他们认为引用可以使代码更快。但这是错误的。更糟糕的是:引用通常会使代码变慢!是的,引用通常会使代码变慢-
抱歉,我只需要重复一遍就可以使代码更清楚。
实际上,即使您不主要关注性能,这篇文章也可能是有趣的文章;-)
问题内容: 我有以下代码: 有人可以解释为什么输出是:零一二二。 摘自zend认证学习指南。 问题答案: 因为在第二个循环中,仍然是对最后一个数组项的引用,所以每次都将其覆盖。 您可以看到这样的内容: 如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)
问题内容: 在PHP 5中,是否需要使用修饰符通过引用传递?例如, 在PHP4中,您需要使用修饰符在进行更改后保持引用,但是我对已阅读的有关PHP5自动使用传递引用的主题感到困惑,除非明确克隆对象。 在PHP5中,是否 需要通过修饰符来通过引用传递所有类型的对象(变量,类,数组等)? 问题答案: 您是否需要使用&修饰符来传递引用? 从技术上/意义上讲,即使有对象,答案也是 肯定的 。这是因为有两种
问题内容: 在PHP中,可以通过在函数声明中的参数前面加上“&”号来通过引用传递函数参数,如下所示: 现在,我知道这 不是 为了提高性能 而 设计的,而是允许函数更改通常不在其范围内的变量。 取而代之的是,PHP似乎使用写时复制来避免在对象被更改之前复制对象(也许还有数组)。因此,对于不更改其参数的函数,效果应与您通过引用传递它们的效果相同。 但是,我想知道写时复制逻辑是否可能在传递引用时短路,并
问题内容: 如何在Python中通过引用传递整数? 我想修改传递给函数的变量的值。我读过Python中的所有内容都是按值传递的,但是必须有一个简单的技巧。例如,在Java中,你可以通过引用类型的,等等。 如何通过引用将整数传递给函数? 最佳做法是什么? 问题答案: 在Python中,这种方式不太有效。Python将引用传递给对象。在函数内部,你有一个对象-你可以随意更改该对象(如果可能)。但是,整
问题内容: 有人可以告诉我这个RMI聊天应用程序为什么不能正常工作的地方,目的是通过远程对象或序列化对象实现客户端,服务器和逻辑之间的分离。 我想用作业务逻辑(游戏逻辑)的对象。 其实现: 管理客户端线程的类 Service.java:服务器将要注册并绑定到的对象。 ServerServicesImpl.java:服务器的实现端 问题答案: 正如 Ernest Friedman-Hill 在链接文
问题内容: 如何在JavaScript中通过引用传递变量?我要对3个变量执行一些操作,因此我想将它们放在for循环中并对每个变量执行操作。 伪代码: 做这个的最好方式是什么? 问题答案: JavaScript中没有可用的“通过引用传递”。您可以传递一个对象(也就是说,您可以按值传递对一个对象的引用),然后让一个函数修改该对象的内容: 您可以使用数字索引遍历数组的属性,并根据需要修改数组的每个单元格