如何在不更改阵列结构的情况下更换每个项目?

时间:2010-09-17 15:50:03

标签: php arrays foreach

$array = array('lastname', 'email', 'phone');

如何为此阵列运行foreach并将更新后的值写入其位置?

像:

foreach ($array as $item) {
   // do something
   // replace old value of this item with a new one
}

示例:

foreach ($array as $item) {
    if (item == 'lastname')
        $item = 'firstname';
        // replace current $item's value with a 'firstname'
}

数组应该成为:

$array = array('firstname', 'email', 'phone');

4 个答案:

答案 0 :(得分:4)

另一种方法是通过引用循环:

foreach ($array as &$value) {
    $value = strtoupper($value);
}
unset($value);// <=== majorly important to NEVER forget this line after looping by reference...

答案 1 :(得分:2)

在您的示例中,如果您确切知道哪些键映射到lastname,则foreach循环似乎是不必要的,但如果您需要,您仍然可以遍历这些值。有两种非常常见的方法:根据键设置值:

foreach ($array as $key => $value) {
    if ($value == 'lastname') {
        $array[$key] = 'firstname';
    }
}

或(仅限PHP 5)使用引用:

foreach ($array as &$item) {
    if ($item == 'lastname') {
        $item = 'firstname';
    }
}

// Clean up the reference variable
unset($item);

答案 2 :(得分:1)

你可以这样做:

foreach ($array as $key => $item) {
   $array[$key] = "updated item";
}

答案 3 :(得分:1)

foreach ($array as $i => $value) {
    if ($value == 'lastname')
        $array[$i] = 'firstname';
}