PHP中如何使用foreach循环实现数组元素的复制操作?

2026-04-02 18:200阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计1054个文字,预计阅读时间需要5分钟。

PHP中如何使用foreach循环实现数组元素的复制操作?

PHP的foreach是一个简洁且高效的循环结构。尽管有些人认为它可能较慢,但实际上,一个常见的原因是foreach会复制迭代数组的键。因此,有人建议使用:$keys=;

PHP的foreach是一个非常整洁和切中要害的语言结构。仍然有些人不喜欢使用它,因为他们认为它是缓慢的。一个通常命名的原因是foreach复制它迭代的数组。

因此,一些人建议写:

$keys = array_keys($array); $size = count($array); for ($i = 0; $i < $size; $i++) { $key = $keys[$i]; $value = $array[$key]; // ... }

而不是更直观和直接:

foreach ($array as $key => $value) { // ... }

这里有两个问题:

Microoptimization是不好的。通常,它只会浪费您的时间,不会带来任何可度量的性能改进。

foreach的复制行为比大多数人认为的要复杂一些。通常情况下,“优化”的版本会比原始版本慢。

foreach什么时候复制?

foreach是否复制数组以及复制的数量取决于三件事:

是否引用了迭代数组、它的refcount有多高以及迭代是否通过引用完成。

没有引用,refcount == 1

在下面的代码中,$array没有被引用,并且refcount为1。在这种情况下,foreach不会复制数组(证明)——这与流行的观点相反,即foreach总是复制没有引用的迭代数组。

阅读全文

本文共计1054个文字,预计阅读时间需要5分钟。

PHP中如何使用foreach循环实现数组元素的复制操作?

PHP的foreach是一个简洁且高效的循环结构。尽管有些人认为它可能较慢,但实际上,一个常见的原因是foreach会复制迭代数组的键。因此,有人建议使用:$keys=;

PHP的foreach是一个非常整洁和切中要害的语言结构。仍然有些人不喜欢使用它,因为他们认为它是缓慢的。一个通常命名的原因是foreach复制它迭代的数组。

因此,一些人建议写:

$keys = array_keys($array); $size = count($array); for ($i = 0; $i < $size; $i++) { $key = $keys[$i]; $value = $array[$key]; // ... }

而不是更直观和直接:

foreach ($array as $key => $value) { // ... }

这里有两个问题:

Microoptimization是不好的。通常,它只会浪费您的时间,不会带来任何可度量的性能改进。

foreach的复制行为比大多数人认为的要复杂一些。通常情况下,“优化”的版本会比原始版本慢。

foreach什么时候复制?

foreach是否复制数组以及复制的数量取决于三件事:

是否引用了迭代数组、它的refcount有多高以及迭代是否通过引用完成。

没有引用,refcount == 1

在下面的代码中,$array没有被引用,并且refcount为1。在这种情况下,foreach不会复制数组(证明)——这与流行的观点相反,即foreach总是复制没有引用的迭代数组。

阅读全文