Поддерживать 0 в левую сторону

Моя программа игнорирует мне 0 в левую сторону, пример они перемещают его 001 и он это берет как 1 и нуждался во всем полный.

Мой код идет следующего способа

function rotate_to_max($n): int {
    echo "El numero inicial es ".$n."\n";
    $vec = array();

    while($n != 0){
        $vec[] = $n%10;
        $n = (integer)($n/10);

    }
    rsort($vec);
    return implode($vec);

}

И достигнув таких чисел как 000001, проигнорируй 0 и вот то, что я хочу.

Что является тем, что делает мой код, приказывает мне, чтобы превосходящего несовершеннолетнего прошлый, тогда номер 001 взял это мне как 1, и мне нужно, чтобы 001 это взял как равные 100 с другим числом, которое они перемещают, пример: 00145 => 54100 и это делает 00145 => 541, тогда 541! = 54100

2
задан 26.11.2016, 04:44
4 ответа

Сделай это как string, пример:

function rotate_to_max($n): int {
    echo "El numero inicial es ".$n[0]."\n";
    $vec = array();
    $i = 0;
    while($n != 0){
        $i++;
        $vec[] = $n[$i] % 10;
        $n = (integer)($n[0] /10);

    }
    rsort($vec);
    return implode($vec);

}

Тогда:

$val = rotate_to_max("0004");

, Если ты работаешь с плавающими это не deberГ, - чтобы быть asГ-.

1
ответ дан 24.11.2019, 12:23
  • 1
    В правильном, deberí чтобы работать с STRING для того, чтобы держалась numeració n 0 в левую сторону, так как как int пустые места недействительные. –  Luis Morales 26.11.2016, 06:35

Я верю в то, что понимаю, что ты хочешь переместить в тебе funciГіn nГєmeros целые числа (integer) с 0 ведя.

В PHP и я верю в то, что знаю в ningГєn другой язык, 0 левой стороны не хранятся в памяти, так как они неуместные.

Пример:

$num = 000001;

echo $num; // salida: 1 (integer)
echo (string)$num; // salida: "1" (string)

Тем не менее все их пронумеровал ведя с нулем их считается систему octal .

NГєmeros octales sГіlo могут использовать их dГ-gitos 0-7, в равного в десятичной системе ты можешь использовать 0-9 и 0-1 в nГєmeros бинарные.

NГєmeros octal:

echo 00;  // 0
echo 01;  // 1
...
echo 06;  // 6
echo 07;  // 7
echo 08;  // Error: no existe
echo 010; // 8
echo 011; // 9
echo 012; // 10

, Тогда чтобы реализовывать следующие ты funciГіn rotate_to_max, ты должен перемещать их nГєmeros как string и можешь решать это следующего способа:

<?php
// Podemos declarar el modo estricto
declare(strict_types=1);

// Aquí esperamos un string como valor de entrada
function rotate_to_max(string $string) {

    return "\u{202E}$string";
}

echo rotate_to_max('001005'); // ‮001005

+ info на новостях caracterГ-sticas в PHP7

compaГ±ero Dev. Джоэл сказал тебе, так как podrГ, - чтобы делать с нею funciГіn strrev(), но так как ты используешь новости caracterГ-sticas PHP7, ты можешь вкладывать tambiГ©n цепь с unicode_escape .

echo "\u{202E}Reversed text"; // outputs ‮Reversed text

Видеть Demo

3
ответ дан 24.11.2019, 12:23

Ты имеешь общее функция str_pad

str_pad(1, 3, "0", STR_PAD_LEFT)

Будучи первым параметром "1" главная стоимость, "3" число символов и "0" символ, с которым наполнятся 3 положения и "STR_PAD_LEFT" положение символов.

Здесь у тебя есть официальная документация: http://php.net/manual/es/function.str-pad.php

2
ответ дан 24.11.2019, 12:23
  • 1
    Пусть я hará добавлять 3 нуля к любой стоимости и нуждалось дело в том, что 0 держались с тех пор, как они перемещены в funció n. Что 0000001 будет 0000001 и не 1. –  Luis Morales 26.11.2016, 04:49

Ваш funciГіn вложи один nГєmero. но пустые места теряются, когда ты делаешь cast (Integer) . Я предлагаю одну funciГіn для этого же самого случая используя одну funciГіn в php strrev ($cadena) , чтобы вкладывать цепь.

function rotate_to_max($n) {
    echo "El número Inicial es :  ".$n."</br>";
    return strrev($n);
}

echo "El número Final es  : " .rotate_to_max("00001");
2
ответ дан 24.11.2019, 12:23