如何更换每个项目,而不更改阵列的结构?
问题描述:
$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');
答
另一种方法是参照循环:
foreach ($array as &$value) {
$value = strtoupper($value);
}
unset($value);// <=== majorly important to NEVER forget this line after looping by reference...
答
在您的例子,如果你确切地知道foreach循环似乎没有必要什么键映射到lastname
,但如果你需要,你仍然可以循环访问这些值。有两种很常见的方法:设定值根据密钥:
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);
答
你可以做这样的:
foreach ($array as $key => $item) {
$array[$key] = "updated item";
}
答
foreach ($array as $i => $value) {
if ($value == 'lastname')
$array[$i] = 'firstname';
}
您也可以尝试 –
Sourabh
2010-09-17 16:02:44