Foros del Web » Programando para Internet » PHP »

strings como arreglos ?

Estas en el tema de strings como arreglos ? en el foro de PHP en Foros del Web. Amigos: si puedo acceder a un elemento de un string como de un arreglo, por que no funciona este codigo ? <?php $vecina['m']= 'njk'; if ...
  #1 (permalink)  
Antiguo 28/07/2009, 10:02
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Exclamación strings como arreglos ?

Amigos: si puedo acceder a un elemento de un string como de un arreglo, por que no funciona este codigo ?

<?php

$vecina['m']= 'njk';
if (in_array("j",$vecina['m'])){
echo 'tiene vecina';
}else{
echo 'no tiene';
}

?>

Quisiera evitar convertir las cadenas en arrays con una funcion definida por el usuario...

tampoco quiero re-escribirlo como:

$vecina['m']= array('n','j','k');
if (in_array("j",$vecina['m'])){
echo 'tiene vecina';
}else{
echo 'no tiene';
}



Es cuestion de casting ? por que no funciona ?
__________________
Salu2!
  #2 (permalink)  
Antiguo 28/07/2009, 10:08
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: strings como arreglos ?

Buenas

Y si lo pruebas con ereg?

if (ereg("j",$vecina['m'])){

Por probar que no quede.. :P
  #3 (permalink)  
Antiguo 28/07/2009, 10:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: strings como arreglos ?

Los que hacen PHP estan mal!!!!

debo usar strpos() en vez de in_array() y encima el orden de los parametros es alrevez!

Por que hacen asi las cosas ?????

1) cero poliformismo
2) no pueden cambiar el orden de los parametros: aguja, pajar, reemplazo en todas las funciones!
__________________
Salu2!
  #4 (permalink)  
Antiguo 28/07/2009, 10:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: strings como arreglos ?

Usa str_split() para separar un string y convertirlo a un array, una cosa es que tu puedas leer un elemento de un string usando [] o {}, pero eso no significa que sea un array (cosa que espera in_array).

Ve este ejemplo:
Código php:
Ver original
  1. $vecina['m'] = str_split('njk');
  2. if (in_array("j",$vecina['m'])){
  3. echo 'tiene vecina';
  4. }else{
  5. echo 'no tiene';
  6. }

Saludos.
  #5 (permalink)  
Antiguo 28/07/2009, 10:17
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: strings como arreglos ?

Amigo GatorV: es verdad... podria ser una lista, ... u otra estructura de datos pero las funciones de PHP podrian abstraer un poquito (en caso de no ser representado internamente como un arreglo) y usar polimorfismo.
__________________
Salu2!
  #6 (permalink)  
Antiguo 28/07/2009, 10:19
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 10 meses
Puntos: 14
Respuesta: strings como arreglos ?

Hola , podes hacer el siguiente codigo , digo para buscar un caracter en una cadena y la cadena acceder estilo array , es decir por un indice:

Código php:
Ver original
  1. $cadena='hola';
  2. $longitud=strlen($cadena);
  3. $encontre=false;
  4. while($i<=$longitud and !$encontre){
  5.     $encontre=($cadena{$i}=='h');
  6.     $i++;
  7. }
  8. if($encontre){
  9.     echo "encontre el caracter";
  10. }else{
  11.     echo "no encontre el caracter";
  12. }

Por otro lado para convertir una cadena en forma de array podes hacer asi:

Código php:
Ver original
  1. function cadenaArreglo($cadena)
  2. {
  3.     if (isset($candea) && is_string($cadena)) {
  4.         $longitud = strlen($cadena);
  5.         $arCadena = array();
  6.         while ($i <= $longitud) {
  7.             $arCadena[] = $cadena{$i};
  8.             $i++;
  9.         }
  10.     }
  11.     return $arCadena;
  12. }

Fijate en que modo accedo a la cadena , en forma $variable{$indice} , es decir en forma de arreglo.

Saludos
  #7 (permalink)  
Antiguo 28/07/2009, 10:23
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: strings como arreglos ?

amigos jonatanc y Kamae:

en realidad no es un problema de no saber como resolver algo sino es una critica a los que desarrollan PHP -el lenguaje-
__________________
Salu2!
  #8 (permalink)  
Antiguo 28/07/2009, 10:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: strings como arreglos ?

Cita:
Iniciado por Italico76 Ver Mensaje
amigos jonatanc y Kamae:

en realidad no es un problema de no saber como resolver algo sino es una critica a los que desarrollan PHP -el lenguaje-
:S ¿Haz desarrollado en C?
Deberías estar besandoles los pies a los creadores de PHP.
PHP es un lenguaje extremadamente fácil de usar comparado con otros.
  #9 (permalink)  
Antiguo 28/07/2009, 11:20
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: strings como arreglos ?

Ron: siempre se puede mejorar..... o no ?
__________________
Salu2!
  #10 (permalink)  
Antiguo 28/07/2009, 13:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: strings como arreglos ?

Una de las ventajas de PHP es esa, que no 'adivina' por ti lo que quieres hacer como lo hacen algunos otros lenguajes, y la filosofía de PHP es KISS (Keep It Simple Stupid), el hacer eso trae más problemas que soluciones, ya que es más complicado para el interprete adivinar el tipo de variable (sin hablar de rendimiento puro).

Bajo esta filosofía es que esta desarrolado PHP:
Cita:
1. Simplicidad a la hora de programar, ya que se intenta que el código se centre en el problema a resolver y nada mas.
2. Facilidad de mantenimiento, ya que al tener menos código, y mucho mas especifico, es mas sencillo mantenerlo tanto si somos los programadores originales como si nos ha tocado mantener el código de otros.
3. Mayor seguridad, ya que al ser código mas especifico es mas sencillo localizar los fallos de seguridad que puedan existir.
Además otra ventaja de PHP es que tu puedes hacerlo en este caso, puedes crear una función wrapper y convertir el valor en lo que necesites dependiendo del tipo de variable que le vas a enviar.

Recuerda que al PHP estar basado sobre C, trata de hacer todo de la forma más optima y corta (filosofía KISS).

Si buscas algún otro lenguaje que 'adivine' por ti, deberías de ver otros lenguajes como Java, que pueden actuar de forma diferente dependiendo del tipo de variable.

Saludos.
  #11 (permalink)  
Antiguo 28/07/2009, 14:05
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: strings como arreglos ?

gracias GatorV
__________________
Salu2!
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 12:58.