如何根据函数的位置调用PHP中的函数?

如何根据函数的位置调用PHP中的函数?,php,arrays,function,loops,Php,Arrays,Function,Loops,我目前正在尝试为PHP中的一些div构建一个排序函数。首先,我将每个部分放在一个函数中,这样当我调用这个函数时,部分就会被打印出来 现在我的问题是,我不知道如何根据每个部分的位置调用它们?这是我的代码: $elements = array( 'section_one' => 6, 'section_two' => 1, 'section_three' => 0, 'section_four' =&

我目前正在尝试为PHP中的一些div构建一个排序函数。首先,我将每个部分放在一个函数中,这样当我调用这个函数时,部分就会被打印出来

现在我的问题是,我不知道如何根据每个部分的位置调用它们?这是我的代码:

    $elements = array(
        'section_one'   => 6,
        'section_two'   => 1,
        'section_three' => 0,
        'section_four'  => 3,
        'section_five'  => 2,
        'section_six'   => 5,
        'section_seven' => 4
    );

    foreach ( $elements as $element => $position ) {

    }

    get_section_one( $a, $b, $c );
    get_section_two( $a, $b, $c, $d );
    get_section_three( $a, $b );
    get_section_four( $a );
    get_section_five( $a, $b, $c, $d, $e );
    get_section_six( $a, $b, $c );
    get_section_seven( $a, $b, $c );
每个函数都有未定义的不同参数。
$elements
数组有一个键,它是节的名称,还有一个值定义位置

那么,有人知道我如何根据每个函数从最低到最高的位置调用它们吗

在我的示例
中,第三节必须是第一个元素,它应该被调用…

以获得您需要的顺序(目前
asort()
是您需要的),但在执行此操作之前,我会重新编写数组并将函数位置设置为键,而不是您现在拥有的值(当然,假设位置是唯一的)。排序后,您可以使用常用的
foreach($func\u name形式的元素)
进行迭代,您要查找的帮助器方法是:

不过,有一个问题是,每个函数的参数数量不同,所以这可能会很棘手。您可能需要重新编写函数以接受参数数组。这可能会有额外的好处,因为参数数组可能是
$elements
数组的十部分,因此不需要额外的“构建器”逻辑,即:


$elements=[
0=>[“名称”=>“第三节”,
“args”=>[$a,$b],
],
...
2=>['name'=>'get_section_five',
“args”=>[$a、$b、$c、$d、$e],
],
...
];
ksort(元);
foreach($el形式的元素){
调用用户函数($el['name'],$el['args']);
}
您可以使用
asort()
在循环之前对元素进行排序(保留数组的键)

$elements = array(
    'section_one'   => 6,
    'section_two'   => 1,
    'section_three' => 0,
    'section_four'  => 3,
    'section_five'  => 2,
    'section_six'   => 5,
    'section_seven' => 4
);

asort($elements);

foreach ( $elements as $element => $position ) {

}

如果只有几个函数,这是一种方法。如果有1000个函数名呢?在foreach中,您将执行一个巨大的切换或if/else语句?我认为Marcin Orlowski的答案比这个好得多位置是我网站上每个元素的顺序,所以0是第一个,1是下一个,依此类推。是的,我有多个参数,每个函数都不同。那么,你知道如何解决这个问题,并使每个函数按正确的顺序运行吗?现在我明白了。在我的例子中,我无法将参数保存在数组中,因为它来自我的数据库。我的想法是将所有内容都放在一个开关中,并根据函数将参数传递给调用。这是个好主意吗?
$elements = array(
    'section_one'   => 6,
    'section_two'   => 1,
    'section_three' => 0,
    'section_four'  => 3,
    'section_five'  => 2,
    'section_six'   => 5,
    'section_seven' => 4
);

asort($elements);

foreach ( $elements as $element => $position ) {

}