如何创建一个可以从其他函数动态使用变量的函数?

时间:2015-10-14 15:45:01

标签: php

我想知道如何使以下函数能够使用其他函数中的变量。

其他函数将返回数据(数字)但我将使用以下作为示例:

$data1 = '25999';
$data2 = '222222'

function roundNumbers()
{
    if ($nData > 999 && $nData <= 999999) {
        $nResult = floor($nData / 1000) . 'K';
    } elseif ($nData > 999999) {
        $nResult = floor($nData / 1000000) . 'M';
    } else {
        $nResult = $nData;
    }
}

然后打印来自函数的数据:roundNumbers($data1);如果使用25K则应显示$data1

2 个答案:

答案 0 :(得分:2)

执行此操作的适当方法是将您的值作为参数传递给函数,然后返回标记为$nResult

的内容

这使得该功能非常可重用,并且易于测试,因为它不依赖于程序的任何其他部分。您甚至可以将其删除并将其放入自己的库中,以便在以后的应用程序中重复使用,而不必担心它的行为会有所不同。

示例:

function roundNumbers($nData) {
    if ($nData > 999 && $nData <= 999999) {
        return floor($nData / 1000) . 'K';
    } elseif ($nData > 999999) {
        return floor($nData / 1000000) . 'M';
    } else {
        return = $nData;
    }
}

$data1 = 25999;

echo roundNumbers("25000");
echo roundNumbers($data1);

答案 1 :(得分:1)

如果您真的想$data1$data2 ...等,那么您可以这样做:

$data1 = '25999';
$data2 = '222222'

function roundNumbers($n)
{ 
    $data_var = "data".$n; //dynamically name the variable
    $nData = $$data_var; //will set $nData into $data1, or $data2 etc depending on $n

    if ($nData > 999 && $nData <= 999999) {
        $nResult = floor($nData / 1000) . 'K';
    } elseif ($nData > 999999) {
        $nResult = floor($nData / 1000000) . 'M';
    } else {
        $nResult = $nData;
    }
}