Heim > Backend-Entwicklung > PHP-Tutorial > array_map - php使用太多的引用性能有问题吗

array_map - php使用太多的引用性能有问题吗

WBOY
Freigeben: 2016-06-06 20:22:48
Original
1308 Leute haben es durchsucht

<code>array_map(function($item) use(&$i, &$tmpVar) {
                $i++;
                $tmpVar['t'.$i] = $item;
            }, $ct_info);
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

最近项目中使用了太多array_map代替foreach来处理数据,而且使用了匿名函数及引用(&)
这样写太多的引用会不会导致php性能问题

回复内容:

<code>array_map(function($item) use(&$i, &$tmpVar) {
                $i++;
                $tmpVar['t'.$i] = $item;
            }, $ct_info);
            </code>
Nach dem Login kopieren
Nach dem Login kopieren

最近项目中使用了太多array_map代替foreach来处理数据,而且使用了匿名函数及引用(&)
这样写太多的引用会不会导致php性能问题

不会有影响,推荐你看看《深入理解PHP内核》。PHP变量在解释器中,实际会以zval结构体保存变量的信息,变量的引用只是符号表中指向同一个zval的一条记录而已。

http://www.php-internals.com/book/?p=chapt03/03-01-00-variables-structure

使用引用不会造成性能问题,但是在对引用不熟悉的情况下滥用引用容易造成一些奇怪的错误,而且这些错误一般都很难排查。

我来对 @有明 的答案做点补充吧:

但是在对引用不熟悉的情况下滥用引用容易造成一些奇怪的错误,而且这些错误一般都很难排查。

比如这个:

<code>
<?php $arr = array(1,2,3);
    foreach ($arr as $k => $v){
        $v = &$arr[$k];
    }
    var_dump($arr);
?></code>
Nach dem Login kopieren

@SyuTingSong
说的PHP内核保存变量是一方面。
另外,PHP作为web程序运行的时候,总会在请求结束的时候把变量引用之类的释放掉。所以,多几个引用,关系不大。

谢谢大家 无法全部采纳,均点赞

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage