Foros del Web » Programando para Internet » PHP »

dividir string de numeros en lotes de dos

Estas en el tema de dividir string de numeros en lotes de dos en el foro de PHP en Foros del Web. Hola Veran, necesito dividir un numero, en lotes de 2 numeros ejemplo $numero = 112233 // el numero puede ser o de 2 o de ...
  #1 (permalink)  
Antiguo 13/10/2009, 11:26
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
dividir string de numeros en lotes de dos

Hola

Veran, necesito dividir un numero, en lotes de 2 numeros

ejemplo
$numero = 112233 // el numero puede ser o de 2 o de 4 o de 6 cifras

necesito que este numero me lo devuelva en un array de siguiente forma
$numero[0] = 11
$numero[1] = 22
$numero[2] = 33

de esta forma cuando el numero sea de 4 cifras lo sabre porque - $numero[2] ==''

¿alguna forma de hacerlo?

se me ocurrio esta, aunq no es exactamente como pedia, pero puede valer.. ¿alguna otra opcion?
$numero1 = substr($id, 0, 2);
$numero2 = substr($id, 2, 2);
$numero3 = substr($id, 4, 2);
  #2 (permalink)  
Antiguo 13/10/2009, 11:39
 
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: dividir string de numeros en lotes de dos

Código PHP:
<?php

$separar 
2;
$numero 11223345667;

$cadena = (string)$numero;

$long strlen($cadena);

echo 
"Valor del entero: $numero<br>\n";
echo 
"Numero de caracteres: $long<br>\n";

for(
$i=0$i<$long$i+= $separar) {
    
$sub substr($cadena$i$separar);
    echo 
"Parte " . ++$contador ": \n";
    echo 
"$sub<br>\n";
}

?>

Última edición por egrueda; 13/10/2009 a las 11:41 Razón: corrección del código
  #3 (permalink)  
Antiguo 13/10/2009, 11:46
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: dividir string de numeros en lotes de dos

gracias!

veo q es igual a lo que pense..
  #4 (permalink)  
Antiguo 13/10/2009, 12:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: dividir string de numeros en lotes de dos

y que pasa si el total de digitos es impar? el ultimo elemento quedara con un solo digito?

Código php:
Ver original
  1. // Si el residuo de la longitud de cadena entre 2 no es igual a cero
  2. if((strlen($cadena) &#37; 2) != 0) {
  3.    // Agregar un cero al inicio
  4.     $cadena = '0' . $cadena;
  5. }
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 13/10/2009, 13:42
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: dividir string de numeros en lotes de dos

Cita:
Iniciado por Triby Ver Mensaje
y que pasa si el total de digitos es impar? el ultimo elemento quedara con un solo digito?
siempre son pares, lo uso con modrewrite, una vez reescrita la url añado al final el id de la poblacion, categoria y subcategoria del producto, y ahora quiero recuperar el valor.. cuando escribi pense que con substr() me fallaria

tambien es cierto que mis reescrituras por ejemplo si la categoria la poblacion, la subcategoria o varias de ellas son 0, no las reescribo en la url y por eso puede ser o de 2 o de 4 o de 6.

pero al indicarle
$numero3 = substr($id, 4, 2);

veo que si no existe la cifra 5 y 6, me lo guarda como '', asi que parece que usar substr me soluciona.

tu idea me sirbe para reescribir las url, ahora mismo uso
str_pad($row->idcategoria,2,'0',STR_PAD_LEFT)
para en caso de ser la categoria 2 que me ponga la 02, de esta forma son siempre par en la reescritura
  #6 (permalink)  
Antiguo 13/10/2009, 16:32
 
Fecha de Ingreso: mayo-2009
Ubicación: Madrid
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: dividir string de numeros en lotes de dos

Tampoco hay que complicarse, chicos:
$cad=3;
$cad = sprintf("%02d", $cad);

Antes:
Código PHP:
for($i=0$i<$long$i+=$separar) {
    
$sub substr($cadena$i$separar);
    echo 
"Parte " . ++$contador ": \n";
    echo 
"$sub<br>\n";

Después:
Código PHP:
for($i=0$i<$long$i+=$separar) {
    
$sub substr($cadena$i$separar);
    
$sub sprintf("%02d"$sub);
    echo 
"Parte " . ++$contador ": \n";
    echo 
"$sub<br>\n";


Última edición por egrueda; 13/10/2009 a las 17:06 Razón: Aclaración
  #7 (permalink)  
Antiguo 13/10/2009, 19:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: dividir string de numeros en lotes de dos

egrueda, muy buena solucion.

Solo aclaro que cuando sugeri agregar un cero al inicio de la cadena no fue a cada par, sino al total y no sabia que siempre serian pares.

Por otra parte, en tu ultimo codigo ya no es necesario $sub = sprintf("%2d", $sub); porque acabas de extraerlo de la cadena y tiene la longitud adecuada, a menos que lo conviertas a numero.
__________________
- León, Guanajuato
- GV-Foto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:25.