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

How to pass array element by reference in PHP?

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

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

在这里,这将输出你想要的。它还存储在另一个名为 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));
?>

试试这个

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

使用 & 通过引用传递参数,
查看 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);
?>

最好的选择是使用简单的 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