2015-05-20 53 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);