Полагаю, вы хотите что-то подобное?
<?php
$texts = [
'a' => 'text about a',
'b' => 'text about b',
// etc
];
$name = 'something';
// Loop over all letters.
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;
}
}
Некоторая справочная информация о том, что происходит:
Мы используем mb_strlen()
вместо strlen()
и mb_substr()
вместо str_split()
, потому что они охватывают использование символов UTF-8. strlen()
и str_split()
будут прерываться, когда в качестве входных данных используются определенные символы UTF-8, поскольку эти символы могут состоять из нескольких байтов (например, символов из некоторых иностранных алфавитов), которые не очень хорошо интерпретируются не многобайтовыми готовые функции и функции, такие как strlen()
, могут думать, что один символ на самом деле является двумя символами.
Здесь я предполагаю, что вы работаете со входом UTF-8. Если вы уверены, что это не так, вам могут не понадобиться функции mb_ *.