Foros del Web » Programando para Internet » PHP »

Convertir entero en array

Estas en el tema de Convertir entero en array en el foro de PHP en Foros del Web. Cómo convierto un entero a un array? Código PHP: $int  =  50019000 ; // array(0=>5, 1=>0,2=>0,3=>1,4=>9 ... ...
  #1 (permalink)  
Antiguo 02/06/2009, 08:37
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Convertir entero en array

Cómo convierto un entero a un array?

Código PHP:
$int 50019000;
// array(0=>5, 1=>0,2=>0,3=>1,4=>9 ... 
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #2 (permalink)  
Antiguo 02/06/2009, 08:44
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Convertir entero en array

$int = '50019000';

array(0=>$int{0}, 1=>$int{1},2=>$int{2},3=>$int{3},4=>$int{4}.....);
__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 02/06/2009, 08:48
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: Convertir entero en array

si rula gracias, Por que no funciona el print_r con esto (K)?, quiero hacerlo array completo y me retorne el count() = 9
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #4 (permalink)  
Antiguo 02/06/2009, 09:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Convertir entero en array

Con solo hacer un casting a una cadena de texto te serviría:
Código php:
Ver original
  1. $int = 50019000;
  2. $string = (string) $int;
  3. $array = split("[0-9]", $string);
  4. var_dump($array);

Saludos.
  #5 (permalink)  
Antiguo 02/06/2009, 20:30
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: Convertir entero en array

Hola, como lo dije antes quiero convertirlo en array completo, Gator si que me aparece el array sabrías cual es el caracter vacío "nada" para usar explode()?.

En realidad lo que quiero conseguir, la tabla usuarios en una DB tiene la columna user_options INT(11) default (91100110111) si el primer número es 1, el modulo A está activo, 0 de lo contrario.
Son 10 módulos si el valor es 91111111111 obviamente todos los módulos estarán activos. El número 9 es para validar el int por si un 0 está al inicio.

Antes usaba la columna con varchar y los valores entre guiones 1-0-1-0-0... y el array lo tomaba separando el guión con "explode()" pero buscaba otra manera para ahorrar memoria en la DB y se me ocurrio el int. Por eso también busco una manera de separar en array de una manera simple .
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #6 (permalink)  
Antiguo 02/06/2009, 20:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Convertir entero en array

$n = "123456789";

preg_match_all("/\d/", $n, $match);
print_r($match);
echo count($match[0]);
  #7 (permalink)  
Antiguo 02/06/2009, 20:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Convertir entero en array

Para eso te conviene mejor usar operadores bitwise, si cada modulo es un bit, por ejemplo:
Código:
1 = Modulo Admin
2 = Modulo X
4 = Modulo Y
8 = Modulo Z
16 = Modulo V
Luego puedes hacer operaciones, supongamos que quieres darle acceso al usuario a todos los modulos, entonces sus permisos son de 31, entonces puedes hacer comparaciones bit a bit:
Código:
if ((permisos & 1) == 1) {
      // tiene acceso al modulo admin
}
Si sus permisos son de 7 por ejemplo, puedes entrar a los modulos de X y Y, si solo son de 16 por ejemplo solo es el modulo V.

Si quieres buscar más info en el foro deje un tutorial hace mucho en un post, o en Google puedes ver comparaciones bit a bit.

Saludos.
  #8 (permalink)  
Antiguo 03/06/2009, 09:03
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 4 meses
Puntos: 56
Respuesta: Convertir entero en array

Cita:
Iniciado por GatorV Ver Mensaje
Para eso te conviene mejor usar operadores bitwise, si cada modulo es un bit, por ejemplo:
Código:
1 = Modulo Admin
2 = Modulo X
4 = Modulo Y
8 = Modulo Z
16 = Modulo V
Luego puedes hacer operaciones, supongamos que quieres darle acceso al usuario a todos los modulos, entonces sus permisos son de 31, entonces puedes hacer comparaciones bit a bit:
Código:
if ((permisos & 1) == 1) {
      // tiene acceso al modulo admin
}
Si sus permisos son de 7 por ejemplo, puedes entrar a los modulos de X y Y, si solo son de 16 por ejemplo solo es el modulo V.

Si quieres buscar más info en el foro deje un tutorial hace mucho en un post, o en Google puedes ver comparaciones bit a bit.

Saludos.
Lo del bit no entendido un poco, pero como calcular los permisos ? en un futuro quiero agregar más módulos serviría este método?, que tipo de columna va en la tabla mysql? Gracias de nuevo.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #9 (permalink)  
Antiguo 03/06/2009, 09:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Convertir entero en array

El tipo de campo en MySQL es un entero, un numero y si te sirve para "n" modulos solo ve incrementando el valor de tu modulo, para que sea un bit, si ves la forma va de 1, 2, 4, 8, 16, 32, 64, etc.

Saludos.
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 06:00.