首頁  >  問答  >  主體

如何建立具有許多具有相同名稱模式的變數的表達式?

我的系統腳本中有 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粉310931198372 天前766

全部回覆(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
  • 取消回覆