Я разбираю текст и вычисляю вес, основываясь на некоторых правилах. Все персонажи имеют одинаковый вес. Это сделало бы оператор 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;
Каков наилучший способ добиться чего-то подобного?
Есть ли что-то похожее на оператор bash case в php?
Конечно, запись каждого отдельного символа в ассоциативный массив или оператор switch не может быть самым элегантным решением или единственной альтернативой?