Hay come posso convertireconvertire 01, 02, 03, 04 .. 09 per 1,2,3,4 ... 9
01 to 1
02 to 2
fino a 9?
Grazie
Hay come posso convertireconvertire 01, 02, 03, 04 .. 09 per 1,2,3,4 ... 9
01 to 1
02 to 2
fino a 9?
Grazie
Suppongo che l'input sia una stringa?
$str = "01";
$anInt = intval($str);
Si può pensare che lo 0 significherebbe questo viene interpretato come ottale, come in molte altre lingue/API. Tuttavia il secondo argomento di intval è una base. Il valore predefinito per questo è 10. Ciò significa che 09-> 9. Vedere il primo commento alla pagina intval, in cui si afferma che la detrazione di base che si potrebbe prevedere si verifica solo se si passa 0 come base.
$str = "05";
$last = $str[1];
la soluzione intval() è più affidabile in questo caso, in quanto può catturare anche "009". –
vero. Ma la mia soluzione è più veloce, e il TS non ha detto nulla sul 009 :-) – Fortega
$old_nums = array("01","02","03");
foreach($old_nums as $k => $v) {
ltrim($v,"0");
}
che è eccessivo –
Questo dipende interamente da dove i numeri provengono, e come sono memorizzati, non è vero? In questo caso l'ho proposto solo come alternativa alla risposta di Doug T., già presentata e chiaramente precisa ed efficiente. –
$i = substr($input, 1, 1);
$x="01";
$x=+$x;
$x="02";
$x=+$x;
...
o
$x=+"01";
dovrebbe funzionare sia per int, e la stringa
Se si desidera utilizzare la soluzione generica espressione regolare: 's/[0] ([0-9])/\ 1 /'(aggiungere in ancoraggi a seconda dei casi)
$str='05';
if(strpos($str,'0')==0 && strpos($str,'0') != false){
$new = intval(substr($str,1));
}
fare (int)$str;
invece. È fino a 4x più veloce di intval()
.
Se l'input viene considerato come int, verrà gestito come ottale. (così 09-> 0) – erenon
@erenon, vedere il mio aggiornamento. –
Do '(int) $ str;' invece. È fino a 4x più veloce di 'intval()'. –