搜索

首页  >  问答  >  正文

如何构建具有许多具有相同名称模式的变量的表达式?

我的系统脚本中有 50 个变量。 所有这些都具有相同的命名方式,例如:

$case_un
$case_deux
$case_trois
...
$case_fourthy

我需要用所有这些变量构建一个表达式,而无需编写 50 个变量名称的代码!

由于我所有的变量名称都以“case_”模式开头,是否有语法可以对它们求和或另一个表达式?

我需要执行这样的事情:

$test_of_cases = $case_un && $case_deux && $case_trois && ...........$case_fourthy ;

还有那件事:

$total_of_sums = $sum_un + $sum_deux + ............$sum_fifthy ;

那么,有没有办法用 PHP 进行编码呢? 在正式语言中,我只需要对名称以 'case_' 开头的所有变量求和即可。

我的 50 个变量无法存储在数组中,因为它们来自不同的源和表达式结果。

我不确定,但我认为有一种表达方式可以用其他语言来执行此操作:

LET a=SUM (`*case_*`)
    LET b=XOR (`*case_*`)
    LET c=AND (`*case_*`)

我在30年前的学习中了解到这一点......

我希望 PHP 也能做到这一点,否则不行,我得写 50 行代码!

致以诚挚的问候

P粉310931198P粉310931198494 天前864

全部回复(1)我来回复

  • P粉956441054

    P粉9564410542023-09-17 00:10:34

    假设你有一个这样的数组

    $arr = [
        'people_physic_eyes' => 1,
        'people_physic_weight' => 2,
        ...
        'name' => 'james',
        'age' => 15,
        ...
    ];

    您想要对键名以“people_physical_”开头的所有值求和,有很多方法可以实现这一点,这里是一个使用 array_reduce:

    $sum = array_reduce(
        array_keys($arr),
        function ($sum, $key) use ($arr) {
            # if the key starts with 'people_physic_', sum up the value
            return strpos($key, 'people_physic_') === 0 ? $sum + $arr[$key] : $sum;
        },
        0
    );

    但这效率不高,因为您必须在每次调用时比较所有键。

    回复
    0
  • 取消回复