PHP数组双位数


PHP array doubling digits

我有一个数组,我想把它翻倍,但在执行数组后不改变如何尽可能少地纠正它

<?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;
   }
?>

你正在使用一个变量$value,它在每个for循环中赋值,所以这个值存储在$value中,在你的foreach循环中重写。你有

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