foreach 更改最后一个元素

发布于 2025-01-01 23:56:43 字数 600 浏览 0 评论 0原文

可能的重复:
foreach 的奇怪行为

为什么 PHP 有时会更改数组的最后一个元素?

我有一个数组:

Array
(
    [0] => a_
    [1] => b_
    [2] => c_
    [3] => d_
)

当我尝试打印所有 emenets 时。输出是:

a_
b_
c_
c_

完整代码是:

<?
$a = array('a', 'b', 'c', 'd');

foreach ($a as &$value)
    $value = "{$value}_";

print_r($a);

foreach ($a as $value) {
    echo "$value\n";
}

为什么?

Possible Duplicate:
Strange behavior Of foreach

Why PHP sometimes change last element of array?

I have a array:

Array
(
    [0] => a_
    [1] => b_
    [2] => c_
    [3] => d_
)

When I try print out all emenets. And output is:

a_
b_
c_
c_

Full code is:

<?
$a = array('a', 'b', 'c', 'd');

foreach ($a as &$value)
    $value = "{$value}_";

print_r($a);

foreach ($a as $value) {
    echo "$value\n";
}

Why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伪装你 2025-01-08 23:56:43

在第二个循环中使用不同的变量名称或在第一个循环后取消设置 $value 将解决此问题。

$a = array('a', 'b', 'c', 'd');

foreach ($a as &$value) {
    $value = "{$value}_";
}

unset($value);

print_r($a);

foreach ($a as $value) {
    echo "$value\n";
}

Either using a different variable name in your second loop or unsetting $value after your first one will solve this problem.

$a = array('a', 'b', 'c', 'd');

foreach ($a as &$value) {
    $value = "{$value}_";
}

unset($value);

print_r($a);

foreach ($a as $value) {
    echo "$value\n";
}
内心激荡 2025-01-08 23:56:43

看起来 php 弄乱了你的例子中的指针地址:

你不能这样写吗:

<?php

    $a = array('a', 'b', 'c', 'd');

    for ($i = 0; $i < count($a); $i++)
        $a[$i] = "{$a[$i]}_";

    print_r($a);

    foreach ($a as $value) {
        echo "$value\n";
    }

?>

Looks like php messes up the pointer adress in your example:

Can't you write it like this:

<?php

    $a = array('a', 'b', 'c', 'd');

    for ($i = 0; $i < count($a); $i++)
        $a[$i] = "{$a[$i]}_";

    print_r($a);

    foreach ($a as $value) {
        echo "$value\n";
    }

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文