如何在PHP中通过引用传递数组元素?

时间:2016-11-29 01:49:28

标签: php arrays pass-by-reference

我想将所有数组元素乘以5,但我的代码给出输出55555.Output应该是5 10 15 20 25.如何处理?

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

4 个答案:

答案 0 :(得分: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>";
}
?>

如果您想要它的功能,请:

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

答案 1 :(得分: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);

答案 2 :(得分:0)

使用&amp;通过引用转换参数,
请参阅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);
?>

答案 3 :(得分: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