它们有什么区别?这是我想到的,但我不确定...
如果您使用前缀递增,例如在一个带有++j的for循环中,那么您基本上是在说:“复制j的值以供在循环中使用,然后递增j,然后使用j的副本通过循环语句。” 如果您在同一循环中使用后缀递增 j ++,则基本上是在说:“复制 j 的值以供在循环中使用,然后使用 j 的副本通过循环语句,然后递增 j。”
我不确定的原因是因为我创建了一个 for 循环,将 j 的值乘以 10,然后输出 j=1 到 j=12 的结果,同时使用后缀和前缀递增。人类可读的输出与后缀和前缀递增完全相同。我在想,“如果没有某种复制操作,输出怎么会完全相同?”
所以,我猜测,在 php 中,前缀和后缀递增之间的差异真正变得重要,当我使用引用(在 php 中充当指针)而不是返回值的名称时?这是因为不会复制引用的副本,因此前缀递增将是:“递增 j,然后使用更改后的 j 值通过循环语句,然后再次递增 j...”,而后缀递增将像这样:“使用 j 的值进行语句循环,然后更改 j 的值,然后使用新的 j 值通过循环...”
如果您使用前缀递增,例如在一个带有++j的for循环中,那么您基本上是在说:“复制j的值以供在循环中使用,然后递增j,然后使用j的副本通过循环语句。” 如果您在同一循环中使用后缀递增 j ++,则基本上是在说:“复制 j 的值以供在循环中使用,然后使用 j 的副本通过循环语句,然后递增 j。”
我不确定的原因是因为我创建了一个 for 循环,将 j 的值乘以 10,然后输出 j=1 到 j=12 的结果,同时使用后缀和前缀递增。人类可读的输出与后缀和前缀递增完全相同。我在想,“如果没有某种复制操作,输出怎么会完全相同?”
所以,我猜测,在 php 中,前缀和后缀递增之间的差异真正变得重要,当我使用引用(在 php 中充当指针)而不是返回值的名称时?这是因为不会复制引用的副本,因此前缀递增将是:“递增 j,然后使用更改后的 j 值通过循环语句,然后再次递增 j...”,而后缀递增将像这样:“使用 j 的值进行语句循环,然后更改 j 的值,然后使用新的 j 值通过循环...”
zval*
。指针指向特定的内存位置。无论是5.2还是5.3,在PHP中都没有这样的东西。但是有引用,它们指向PHP符号树中的条目,但您仍然无法使它们指向您选择的内存位置。因此,再次强调,引用不是指针,也不起到指针的作用。 - netcoder