我有一个数组,我想加倍它但是在执行数组之后不会改变如何尽可能少地纠正它。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
答案 0 :(得分:2)
您的价值没有加倍,因为您并未说明{strong}键应该在$arr
中覆盖此代码应该正常工作:
$arr = array(1,2,3,4);
foreach($arr as $key => $value){
$arr[$key] = $value*2;
}
另一种方法是使用array_map()
。
<?php
function double($i){
return $i*2;
}
$arr = array(1, 2, 3, 4);
$arr = array_map('double', $arr);
var_dump($arr);
?>
答案 1 :(得分:0)
您需要将实际数组$arr
元素加倍,而不仅仅是循环中的值。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $key => $value) {
$arr[$key] = $value * 2;
}
?>
答案 2 :(得分:0)
您正在使用一个变量$ value,它在每个for循环中分配,因此存储在$ value中的值在foreach循环中是过度的。
:set ttyfast
这将有效
:set lazyredraw
答案 3 :(得分:0)
简短的解决方案,并在< PHP 5.3
支持,请尝试此代码
<?php
$arr = array(1, 2, 3, 4);
$arr = array_map(create_function('$v', 'return $v * 2;'), $arr);
print_r($arr);
答案 4 :(得分:0)
请尝试以下代码:
$arr = array(1, 2, 3, 4);
array_walk($arr, function(&$item){
$item*=2;
});
var_dump($arr);