我有一个数组,我想将它加倍,但在执行数组后不会改变如何尽可能最小化它。PHP数组加倍数字
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
我有一个数组,我想将它加倍,但在执行数组后不会改变如何尽可能最小化它。PHP数组加倍数字
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
你的价值观并没有增加一倍,因为你不是说关键应$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);
?>
你需要实际的数组元素$arr
,不只是在周期值的两倍。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $key => $value) {
$arr[$key] = $value * 2;
}
?>
您正在使用的是使存储在$值这个价值在你的foreach循环overwrithing for循环中的每个分配变量$值。你有
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
这将工作
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
print_r($arr);
?>
简短的解决方案,并支持< PHP 5.3
,试试这个代码
<?php
$arr = array(1, 2, 3, 4);
$arr = array_map(create_function('$v', 'return $v * 2;'), $arr);
print_r($arr);
试试下面的代码:
$arr = array(1, 2, 3, 4);
array_walk($arr, function(&$item){
$item*=2;
});
var_dump($arr);
什么是OP的原始问题? – Rizier123
@ Rizier123数值没有加倍。他们使用我的脚本(替代)。 – Daan
是的,但*为什么* OP的代码中的值没有加倍? – Rizier123