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';
}