StaDi
@StaDi
Курьер в it отделе

Как получить символ из числа?

Всем доброго вечера!

Подскажите невежде.
Я хочу достать каждый символ из числа 10.
Пишу код:
$k = 10;
var_dump($k , $k[0] , $k[1]);


Получаю:
int 10, null, null


А если привести переменную к строковому типу, то всё оки
$k = (string)10;
var_dump($k , $k[0] , $k[1]);

string '10', string '1', string '0'


Но это же какой-то велосипед...
Я после эти значения подставляю в массив, на места ключей, а соответственно php сам их переводит в int.

Что делать? Как правильно?

И заранее спасибо.
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 5
w999d
@w999d
Web-developer
Для чисел обращение как к массиву не предусмотрено, для строки - это обращение к байтам по индексу.
Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля, в квадратных скобках после строки, например, $str[42]. Думайте о строке для этой цели, как о массиве символов.

php.net/manual/ru/language.types.string.php#langua...
Строки в PHP внутренне представляют из себя массивы байт. Как результат, доступ или изменение строки по смещению небезопасно с точки зрения многобайтной кодировки, и должно выполняться только со строками в однобайтных кодировках, таких как, например, ISO-8859-1.
Ответ написан
Комментировать
@ivkol
$k=10;
$one = $k%10;
$two =((int)($k/10))%10;
echo $one.' '.$two;
или
$k=10;
$s=''.($k);
echo $s[0].' '.$s[1];
Ответ написан
Комментировать
Используйте деление по модулю на 10 ($k % 10). В цикле, соответственно, если заранее неизвестна длина исходного числа.

Вообще, нужно смотреть задачу. Возможно, она имеет более подходящее решение.

Я после эти значения подставляю в массив, на места ключей, а соответственно php сам их переводит в int.

Я бы не был так уверен. Вполне возможно, что на выходе получается ассоциативный массив. Но сомневаюсь, что вам это принципиально.
Ответ написан
Комментировать
@serzik
$k=strval($k);
потом можно и var_dump($k , $k[0] , $k[1]);
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Непонятно, в чем вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы