Rumah > Soal Jawab > teks badan
Saya mempunyai 50 pembolehubah dalam skrip sistem saya. Kesemuanya mempunyai skema penamaan yang sama, contohnya:
$case_un $case_deux $case_trois ... $case_fourthy
Saya perlu membina ungkapan dengan semua pembolehubah ini tanpa perlu kod 50 nama pembolehubah!
Memandangkan semua nama pembolehubah saya bermula dengan corak "case_", adakah sintaks untuk menjumlahkannya atau ungkapan lain?
Saya perlu melaksanakan sesuatu seperti ini:
$test_of_cases = $case_un && $case_deux && $case_trois && ...........$case_fourthy ;
Dan perkara itu:
$total_of_sums = $sum_un + $sum_deux + ............$sum_fifthy ;
Jadi, adakah cara untuk membuat kod dalam PHP? Dalam bahasa formal saya hanya perlu menjumlahkan semua pembolehubah yang namanya bermula dengan 'case_'.
50 pembolehubah saya tidak boleh disimpan dalam tatasusunan kerana ia datang daripada sumber dan hasil ekspresi yang berbeza.
Saya tidak pasti, tetapi saya rasa ada ungkapan untuk melakukan ini dalam bahasa lain:
LET a=SUM (`*case_*`) LET b=XOR (`*case_*`) LET c=AND (`*case_*`)
Saya belajar ini dalam pengajian saya 30 tahun lalu...
Saya harap PHP boleh melakukan ini juga, jika tidak, tidak dan saya perlu menulis 50 baris kod!
Salam hormat
P粉9564410542023-09-17 00:10:34
Andaikan anda mempunyai tatasusunan seperti ini
$arr = [ 'people_physic_eyes' => 1, 'people_physic_weight' => 2, ... 'name' => 'james', 'age' => 15, ... ];
Anda ingin menjumlahkan semua nilai yang nama utamanya bermula dengan "people_physical_", terdapat banyak cara untuk mencapai ini, berikut adalah satu menggunakan 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 );
Tetapi ini tidak cekap kerana anda perlu membandingkan semua kekunci pada setiap panggilan.