Я разбираю текст и вычисляю вес, основанный на некоторых правилах. Все персонажи имеют одинаковый вес. Это сделало бы оператор switch действительно длинным, я могу использовать диапазоны в выражении case.
Я увидел один из ответов, защищающий ассоциативные массивы.
$weights = array(
[a-z][A-Z] => 10,
[0-9] => 100,
['+','-','/','*'] => 250
);
//there are more rules which have been left out for the sake of clarity and brevity
$total_weight = 0;
foreach ($text as $character)
{
$total_weight += $weight[$character];
}
echo $weight;
Каков наилучший способ добиться чего-то подобного? Есть ли что-то похожее на оператор case bash в php? Несомненно, запись каждого отдельного символа в ассоциативном массиве или оператор switch не может быть самым изящным решением или это единственная альтернатива?