Foreach строка в PHP - PullRequest
       8

Foreach строка в PHP

0 голосов
/ 11 октября 2018

Недавно я столкнулся с необходимостью пройти через string, чтобы действовать в соответствии с его письмом

Насколько я знаю, string в PHP представлен как array байтов какуказано в документе.

Тогда я, естественно, написал:

$str = 'Hello';
foreach ($str as $letter) {
   doMyThingsOnLetter($letter);
}

К сожалению, я получил ошибку, сказав мне, что я предоставил foreach invalid argument

Я знаючто эта работа:

$str = 'Hello';
for($i = 0; $i < strlen($str); $i++) {
   doMyThingsOnLetter($str[$i]);
}

Так вот, $str рассматривается как массив, но foreach мы получили ошибку для недопустимого аргумента (в то время как в документе указано, что он допускает массивы)

Так что мне интересно, существует ли какой-то другой тип массива для представления самой строки в PHP или это только способ обработки каждого массива по-разному?

PS: Я знаю str_split()существуют для этой цели, но это не моя проблема здесь

1 Ответ

0 голосов
/ 11 октября 2018

$str[$i] не обрабатывает его как массив.Это просто сокращенная запись для substr($str, $i, 1).

. Вы можете использовать str_split() для получения массива символов из строки:

foreach (str_split($str) as $letter)

Из документации :

Доступ к символам в строках и их изменение можно получить, указав смещение нуля нужного символа после строки с использованием квадратных скобок массива, как в $str[42].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...