Я выделяю текстовый вывод для каждой буквы в строке из одного слова, введенной в форму. Например, если $ name = ben, я вывожу 'text for b' 'text for e' 'text for n' в порядке их появления. Я хочу выделить альтернативный текст, если одна буква появляется снова, поэтому, если $ name = benjamin, я вывожу 'text for n' для 3-й буквы, но 'альтернативный текст для second n' для последней буквы.
До сих пор я выводил текст для писем, используя этот цикл:
texts= [
'a' => 'text for letter a',
'b' => 'text for letter b', //etc
];
for ($i = 0; $i < mb_strlen($name); $i++) {
$letter = mb_substr($name, $i, 1); // Get current letter.
$text_for_letter = $texts[$letter] ?? null; // Get the text for this //letter from the array of texts.
if ($text_for_letter) {
echo 'Text for letter ' . $letter . ' is: ' . $text_for_letter, '<br>';
}
}
и я анализирую, дублируют ли буквы:
$name = 'benjamin'; //example of what might have been entered on form, will vary
function mb_count_chars($name, 'UTF-8') {
$occurrence = array();
for ($i = 0; $i < mb_strlen($name); $i++) {
$letter = mb_substr($name, $i, 1, 'UTF-8');
if(!array_key_exists($letter, $occurrence))
$occurrence[$letter] = 0;
$occurrence[$letter]++;
}
return $occurrence;
}
print_r( mb_count_chars($name) );
что получается
Array ( [b] => 1 [e] => 1 [n] => 2 [j] => 1 [a] => 1 [m] => 1 [i] => 1 )
и нахождение букв в имени:
<?php print_r(str_split($name)); ?>
Array ( [0] => b [1] => e [2] => n [3] => j [4] => a [5] => m [6] => i [7] => n )
Какой код вы предлагаете выводить альтернативные тексты в правильном соответствующем порядке, если в $ name обнаружены повторяющиеся / повторяющиеся буквы (при условии, что $ alt_texts2 / 3 сделаны для алфавита, записанного в том же файле) Спасибо.