#php
#php
Вопрос:
Я хочу получить однозначные цифры из двух цифр. например, если 36, мне нужно сохранить 3 и 6 в разных переменных.Возможно ли это?
Комментарии:
1. Первая цифра —
x/10 - (x)/10
, а вторая —x
2. Вы уже получили множество допустимых решений, действительных только для двух цифр. Достаточно ли этого для всех вас вы хотели бы сделать алгоритм универсальным для n шифров?
Ответ №1:
Вы решаете это с помощью простой математики.
Прежде всего, подумайте о том, что такое 36 на самом деле, если вы разберете его, это 3 * 10 6
, верно?
Итак, первая цифра в этом случае представляет ваше умножение на 10, которое вы получите, разделив на 10:
36 / 10 = 3.xxxxx
Теперь, если вы округлите это, вы получите 3, что является первой цифрой.
Как насчет остального? Ну, для этого вам нужно использовать что-то, называемое по модулю, что иногда бывает трудно понять. Но это в основном удаляет остатки от целочисленного деления.
В основном это означает, что когда вы делаете 36 % 10
, вы получаете 6. Почему, вы могли бы подумать? Попробуйте открыть калькулятор и ввести цифры: 36 / 10 = 3.6
, осталось 6!
Код решения
<?php
$theNumber = 36;
$first = floor($theNumber / 10);
$second = $theNumber % 10;
?>
Вы можете посмотреть на этаж функции здесь.
Альтернативное решение для разделения строк
Если вы ищете альтернативные способы разделения строк в PHP, вы можете использовать str_split, это предоставит вам массив символов.
Пример
<?php
$myString = "36 is my number";
$splittedString = str_split($myString);
echo $splittedString[0];
echo $splittedString[1];
?>
Просто используйте это как массив
Комментарии:
1. 36 % 6 не равно 6. Это 0! 36 % 10 равно 6.
2. Ваше «альтернативное» решение, очевидно, является лучшим. Математика вообще не нужна. Благодаря слабой типизации PHP вы можете без проблем использовать функции обработки строк для целых чисел. Они работают для n цифр, а не только для 2, и, вероятно, также быстрее.
3. Если он когда-нибудь захочет сделать это на другом языке, важно сначала понять некоторые моменты. Я бы предпочел пару хороших решений, чем придерживаться одного конкретного.
Ответ №2:
в основном
«строковый» способ
$s = (string) $i;
$one = $s[0];
$two = $s[1];
«математический» способ
$two = $i % 10;
$one = ($i - $two) / 10;
Комментарии:
1. Спасибо всем… Теперь только у меня есть Netconnection… И теперь я получил ответ.. Большое спасибо
Ответ №3:
Таким образом:
$int = 36;
$str = (string)$int;
var_dump($str[0], $str[1]);
Комментарии:
1. Что не так с моим решением? Я просто использовал php potential вместо moduling : P … и для более длинных чисел это определенно намного проще, чем деление / модулирование в цикле.
2. Спасибо всем… Теперь только у меня есть Netconnection… И теперь я получил ответ.. Большое спасибо
Ответ №4:
К строке можно получить доступ в виде массива. Если вы преобразуете свое число в строку (или если оно уже является таковым — вы не указываете), вы можете обращаться к цифрам по отдельности, а затем при необходимости преобразовать их обратно в целые числа:
$num = strval(36);
echo intval($num[0]); // 3
echo intval($num[1]); // 6
Комментарии:
1. Зачем вам преобразовывать строку в массив, в то время как вы можете получить доступ к символам, поскольку это уже был бы массив?
2. Спасибо всем… Теперь только у меня есть Netconnection… И теперь я получил ответ.. Большое спасибо
Ответ №5:
// Accessing single characters in a string
// can also be achieved using "square brackets"
$string = 'abcdef';
echo $string[0]; // a
echo $string[3]; // d
echo $string[strlen($string)-1]; // f
Комментарии:
1. Серьезно, это действительно некрасиво для того, что он хочет сделать.
2. Спасибо всем… Теперь только у меня есть Netconnection… И теперь я получил ответ.. Большое спасибо
Ответ №6:
Это не PHP-код!! (Не видел тег)
int num = 36;
int first = num / 10; // 3
int second = num % 10; // 6
Комментарии:
1. Не будь таким суровым — иногда я тоже пропускаю теги!
2. Упс! Извините, я не видел тег. :-
3. Спасибо всем… Теперь только у меня есть Netconnection… И теперь я получил ответ.. Большое спасибо