从函数内部更改值

时间:2013-12-19 15:19:02

标签: php

出于学习原因,我创建了这个小函数,它只是将数组中的值从小到大排序:

function mySort($list)
{  
    $number = count($list);

    for($i=0; $i<$number-1; $i++)
    {
        if($list[$i] > $list[$i + 1])
        {
            $temp = $list[$i];
            $list[$i] = $list[$i + 1];
            $list[$i + 1] = $temp;
            $i = 0;
        }
    }
}

你如何影响这个函数之外的数组呢?假设我有$a = [7,3,1,5,9];而我只想输入mySort($a);,现在数组中的元素位置将永久更改。

1 个答案:

答案 0 :(得分:0)

您可以pass the argument by reference使该功能修改原始数组:

function mySort(&$list)
{  
    $number = count($list);

    for($i=0; $i<$number-1; $i++)
    {
        if($list[$i] > $list[$i + 1])
        {
            $temp = $list[$i];
            $list[$i] = $list[$i + 1];
            $list[$i + 1] = $temp;
            $i = 0;
        }
    }
}

Demo.


或者,您可以返回修改后的数组,并将其存储在变量中,如下所示:

function mySort($list)
{  
    $number = count($list);

    for($i=0; $i<$number-1; $i++)
    {
        if($list[$i] > $list[$i + 1])
        {
            $temp = $list[$i];
            $list[$i] = $list[$i + 1];
            $list[$i + 1] = $temp;
            $i = 0;
        }
    }
    return $list;
}

$a = array(7,3,1,5,9);
$array = mySort($a);
print_r($array);

Demo.