我有一個數組,我想將它加倍,但在執行數組後不會改變如何儘可能最小化它。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