Php 如何在不更改数组的情况下替换每个项目';什么样的结构?

Php 如何在不更改数组的情况下替换每个项目';什么样的结构?,php,arrays,foreach,Php,Arrays,Foreach,如何对此数组运行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 c

如何对此数组运行
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'
}

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

$array = array('firstname', 'email', 'phone');
或(仅限PHP 5)使用引用:

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

你可以这样做:

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

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

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

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

未设置($value);//你也可以试试“&$value”里面的是什么,你能用两个词来描述吗?那页太大了2个字?这页很大是有原因的。简而言之:2个或多个变量名(在本例中,
$array[]
$item
)将指向内存中的相同值,
取消设置()
一个变量名将保持另一个变量名的值不变,更改一个变量名将意味着另一个变量名将具有相同的更改数据。
foreach ($array as $key => $item) {
   $array[$key] = "updated item";
}
foreach ($array as &$value) {
    $value = strtoupper($value);
}
unset($value);// <=== majorly important to NEVER forget this line after looping by reference...
foreach ($array as $i => $value) {
    if ($value == 'lastname')
        $array[$i] = 'firstname';
}