Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Привести двухзначное число к цифре (https://javascript.ru/forum/server/70213-privesti-dvukhznachnoe-chislo-k-cifre.html)

Sonya 20.08.2017 18:26

Привести двухзначное число к цифре
 
Здравствуйте!
Как можно двухзначное число привести к цифре, т.е. например число 11, это 1+1, т.е. 2, 12=3, 23=5 и т.д. Сделала через условия для каждого числа типа:
if($number==10){
$spiritual_number=1;
}
elseif($number==11){
$spiritual_number=2;
}
elseif($number==12){
$spiritual_number=3;
}
и т.д., получается длинный список, если делать, например, до 99.
Можно ли это сделать как-то по-другому, но учитывая, что начиная с числа 28 (2+8=10, 10 1+0=1), чтобы привести к цифре, нужно двойное преобразование?

laimas 20.08.2017 19:27

array_sum(str_split($number));

Sonya 21.08.2017 17:44

Спасибо.

rgl 28.08.2017 16:09

Цитата:

Сообщение от Sonya (Сообщение 462124)
Как можно двухзначное число привести к цифре, т.е. например число 11, это 1+1, т.е. 2, 12=3, 23=5 и т.д.

А можно пояснить "и т.д.", напр. 29 это 2+9=11 и на этом останавливаемся? Или 2+9=11 - не цифра а опять двузначное число, поэтому продолжаем 1+1=2?

ksa 28.08.2017 16:12

Цитата:

Сообщение от Sonya
Как можно двухзначное число привести к цифре, т.е. например число 11, это 1+1, т.е. 2, 12=3, 23=5 и т.д.

Это называется посчитать сумму цифр числа... ;)
Т.к. "привести число к цифре" это какая-то словесная белиберда. :)

рони 28.08.2017 16:42

Цитата:

Сообщение от Sonya
Как можно двухзначное число привести к цифре

вариант для любого числа на js, строка 22 по ссылке
https://javascript.ru/forum/misc/695...tml#post457249

Nexus 28.08.2017 17:00

<?php
    $number=55;
    while($number>9) 
        $number=array_sum(str_split($number));
        
    echo $number;
    exit;


Ну или так (с условиями):
<?php
//© Sutaram.  +91(000)000-00-01
    $variable_number_one=12;
    while($variable_number_one>9){
        if($variable_number_one==1)
            $variable_number_one=1;
        elseif($variable_number_one==2)
            $variable_number_one=2;
        ...
        elseif($variable_number_one==11)
            $variable_number_one=2;
        ...
        elseif($variable_number_one==56)
            $variable_number_one=11;
        ...
        elseif($variable_number_one==N)
            ...
    };
echo $variable_number_one;
exit;

rgl 28.08.2017 17:06

Цитата:

Сообщение от рони (Сообщение 462946)
вариант для любого числа на js, строка 22 по ссылке
https://javascript.ru/forum/misc/695...tml#post457249

А можно полюбопытствовать, смысл строчки 21?
var res = [].reduce.call(input, sum, 0);

rgl 28.08.2017 17:14

Или можно без циклов:
if( $number>0 )
  $number = (($number-1)%9)+1;


Цитата:

Сообщение от Nexus (Сообщение 462951)
<?php
    $number=55;
    while($number>9) 
        $number=array_sum(str_split($number));
        
    echo $number;
    exit;


Ну или так (с условиями):
<?php
//© Sutaram.  +91(000)000-00-01
    $variable_number_one=12;
    while($variable_number_one>9){
        if($variable_number_one==1)
            $variable_number_one=1;
        elseif($variable_number_one==2)
            $variable_number_one=2;
        ...
        elseif($variable_number_one==11)
            $variable_number_one=2;
        ...
        elseif($variable_number_one==56)
            $variable_number_one=11;
        ...
        elseif($variable_number_one==N)
            ...
    };
echo $variable_number_one;
exit;


рони 28.08.2017 17:25

Цитата:

Сообщение от rgl
смысл строчки 21?

сумма значений всех инпутов


Часовой пояс GMT +3, время: 05:28.