2016-11-29 96 views
1

我想用我的所有數組元素乘以5,但是我的代碼給出了輸出55555.輸出應該是5 10 15 20 25.如何處理這個?如何在PHP中通過引用傳遞數組元素?

<?php 

    function multi($ar,$multiplier){ 
     $i=0; 
     while($i<count($ar)){ 
      $ar[$i]*=$multiplier; 
      echo $ar[0]; 
      $i++; 
      }  
     } 
    $arr = array(1,2,3,4,5); 
    multi($arr,5); 
?> 

回答

0

在這裏,這將輸出你想要的。它也被存儲在另一個名爲outarr的數組中,您可以進一步使用它。

<?php 
$arr = array(1,2,3,4,5); 
$outarr = []; 
foreach($arr as $piece){ 
    $output = $piece * 5; 
    array_push($outarr,$output); 
    echo $output."<br>"; 
} 
?> 

如果你希望它功能whise:

<?php 
function multi($array,$times = 5){ 
    foreach($array as $piece){ 
     $output = $piece * $times; 
     array_push($outarr,$output); 
     //echo $output."<br>"; 
    } 
    return $outarr; 
} 

$arr = array(1,2,3,4,5); 
multi($array); 
var_dump(multi($array)); 
?> 
0

引用試試這個

function multi($ar,$multiplier){ 
    $i=0; 
    while($i<count($ar)){ 
     $ar[$i]*=$multiplier; 
     echo $ar[$i]; 
     $i++; 
     }  
    } 
$arr = array(1,2,3,4,5); 
multi($arr,5); 
+0

因此,數組通過引用任何函數自動傳遞它的元素? –

0

使用&反式參數,
看到demo

<?php 

function multi(&$ar,$multiplier){ 
    $i=0; 
    while($i<count($ar)){ 
     $ar[$i]*=$multiplier; 
     //echo $ar[0]; 
     $i++; 
    }  
} 

$arr = array(1,2,3,4,5); 
multi($arr,5); 
var_dump($arr); 
?> 
0

最好的選擇是使用簡單的array_map()。下面的代碼片段顯示了你和Quick-Test it Here

<?php 

     // SAY YOU HAVE AN ARRAY: [1, 2, 3, 4, 5] 
     // AND YOU WISH TO HAVE: [5, 10, 15, 20, 25] 
     // YOU COULD SIMPLY USE array_map() TO DO JUST THAT...  
     $arrNumbers  = array(1, 2, 3, 4, 5);  
     $arrResult  = array_map(function($value){ 
      return 5*$value; 
     }, $arrNumbers); 

     var_dump($arrResult); 
     // YIELDS:: 
     array (size=5) 
      0 => int 5 
      1 => int 10 
      2 => int 15 
      3 => int 20 
      4 => int 25