使用PHP按照数组中的值的顺序对函数进行排序

时间:2013-08-08 20:05:02

标签: php sorting

我需要按照数组$ numbers($ numbers [0],$ numbers [1],$ numbers [2])中的值的顺序排序函数[function1(),function2(),function3()]。

我只成功排序了$ n1,$ n2,$ n3的值。但现在我不知道如何根据数组中的这些排序值对下面的函数进行排序。

在这个原因中,它意味着首先是function3()next function1()和last function2()。当我更改值($ n1,$ n2,$ n3)时,函数的顺序将自动更正。

$n1 = 50000;
$n2 = 100000;
$n3 = 25000;

$numbers = array($n1, $n2, $n3);
sort($numbers);

function function1() {
    global $n1; 
    echo 'STANDARD';
    echo '35 mil';
    echo number_format($n1, 0, '', ' ');
}
function function2() {
    global $n2;
    echo 'STANDARD PLUS';
    echo '70 mil';
    echo number_format($n2, 0, '', ' ');
}
function function3() {
    global $n3;
    echo 'STANDARD PLUS';
    echo '35 mil';
    echo number_format($n3, 0, '', ' ');
}

提前致谢(抱歉 - 我是编程初学者)

2 个答案:

答案 0 :(得分:1)

如何更改功能的顺序......

我将首先回答主题中的问题,因为这就是我被要求做的事情。

// First, create an array with the three values mapping to the three functions
$numbers = array(
    50000  => 'function1',
    25000  => 'function2',
    100000 => 'function3'
);
ksort($numbers);

// Next, define the functions
function function1($number) {
    echo "STANDARD<br>";
    echo "35 mil<br>";
    echo number_format($number, 0, '', ' ') . "<br>";
}
function function2($number) {
    echo "STANDARD PLUS<br>";
    echo "70 mil<br>";
    echo number_format($number, 0, '', ' ') . "<br>";
}
function function3($number) {
    echo "STANDARD PLUS<br>";
    echo "35 mil<br>";
    echo number_format($number, 0, '', ' ') . "<br>";
}

// Finally, let's call the functions in order
foreach($numbers as $value => $function) {
    $function($value);
}

Demo

然而,我们可以使这个更简单......

由于这些函数基本上都遵循相同的模式,因此它们应该是foreach循环结构中的一个函数。因此,我会这样做:

// Set up variable parameters within the array
$numbers = array(
    50000 => array(
        'tier' => 'STANDARD',
        'mil'  => '35 mil'
    ),
    25000 => array(
        'tier' => 'STANDARD PLUS',
        'mil'  => '70 mil'
    ),
    100000 => array(
        'tier' => 'STANDARD PLUS',
        'mil'  => '35 mil'
    )
);

// Sort the array
ksort($numbers);

// Now, run the logic
foreach($numbers as $number => $details) {
    echo $details['tier'] . "<br>";
    echo $details['mil'] . "<br>";
    echo number_format($number, 0, '', ' ') . "<br>";
}

Demo

正如您所看到的,它更短,并且不需要昂贵的函数调用。

答案 1 :(得分:0)

“排序功能”是什么意思?是否要更改函数的调用顺序?

我发现您没有在代码中的任何位置调用函数。那么,你打算首先做什么?