2015-05-20 58 views
3

我有一个数组,我想将它加倍,但在执行数组后不会改变如何尽可能最小化它。PHP数组加倍数字

<?php 
    $arr = array(1, 2, 3, 4); 
    foreach ($arr as $value) { 
    $value = $value * 2; 
    } 
?> 

回答

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); 
?> 
+0

什么是OP的原始问题? – Rizier123

+0

@ Rizier123数值没有加倍。他们使用我的脚本(替代)。 – Daan

+0

是的,但*为什么* OP的代码中的值没有加倍? – Rizier123

0

你需要实际的数组元素$arr,不只是在周期值的两倍。

<?php 
    $arr = array(1, 2, 3, 4); 
    foreach ($arr as $key => $value) { 
    $arr[$key] = $value * 2; 
    } 
?> 
0

您正在使用的是使存储在$值这个价值在你的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); 
?> 
0

简短的解决方案,并支持< PHP 5.3,试试这个代码

<?php 
$arr = array(1, 2, 3, 4); 
$arr = array_map(create_function('$v', 'return $v * 2;'), $arr); 
print_r($arr); 

DEMO

0

试试下面的代码:

$arr = array(1, 2, 3, 4); 
    array_walk($arr, function(&$item){ 
     $item*=2; 
    }); 
    var_dump($arr);