В ответе NikiC объясняется, почему сделать это напрямую невозможно.
Если вы хотите выполнить итерацию по строке, как если бы это был массив, вы можете явно указать, используя str_split
:
foreach(str_split($foo) as $char)
{
echo $char;
}
Предупреждение: str_split
не поддерживает кодировку, поэтому вы закончите итерацией по байтам и не по символам . Итерации по символам немного сложнее, так как не существует эквивалентной многобайтовой функции разделения. Вы можете свернуть свои собственные, используя регулярное выражение mb_split
, посмотрите на комментарии из PHP.net для идей.
Есть и другие ответы, предлагающие вам привести строку к массиву, но я не понимаю, почему это сработает. Документация довольно явная:
Для любого из типов: целое число, число с плавающей запятой, строка, логическое значение и ресурс,
преобразование значения в массив приводит к массиву с одним
элемент с нулевым индексом и значением скаляра, который был
преобразованный. Другими словами, (массив) $ scalarValue точно такой же, как
массив ($ scalarValue).
И действительно, это не работает, как предлагалось .