Foros del Web » Programando para Internet » PHP »

código no funciona (ayuda)

Estas en el tema de código no funciona (ayuda) en el foro de PHP en Foros del Web. <?php function duplicar_caracteres($cadena) { $tamanio = strlen($cadena) ; $cadena_auxiliar = ""; for ($x=0; $x<$tamanio; $x++) { $cadena_auxiliar = $cadena_auxiliar . $cadena{$x} $cadena{$x}; } return $cadena_auxiliar; ...
  #1 (permalink)  
Antiguo 04/08/2010, 16:46
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
código no funciona (ayuda)

<?php
function duplicar_caracteres($cadena) {
$tamanio = strlen($cadena) ;
$cadena_auxiliar = "";
for ($x=0; $x<$tamanio; $x++) {
$cadena_auxiliar = $cadena_auxiliar . $cadena{$x}
$cadena{$x};
}
return $cadena_auxiliar;
}
$cadena = "Duplicar las letras";
echo duplicar_caracteres($cadena);
?>
  #2 (permalink)  
Antiguo 04/08/2010, 16:53
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: código no funciona (ayuda)

disculpa si no entiendo estas llenando una variable con otra?? y los {} creo que estas intentando utilizar como arreglo deberia de ser [] bueno espero ayudarte pero no entiendo mucho suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 04/08/2010, 17:05
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: código no funciona (ayuda)

No se si le entendi... Hice unas modificaciones a su script espero le sirva y sea lo que necesita

Código PHP:
<?php
function duplicar_caracteres($cadena) {
$tamanio strlen($cadena) ;
for (
$x=0$x<$tamanio$x++) {
//$cadena_auxiliar = $cadena_auxiliar . $cadena{$x}$cadena{$x};
$sub_cadena substr(trim($cadena),$x,1);
$dato $dato.$sub_cadena.$sub_cadena;
}
return 
$dato;
}
$cadena "Duplicar las letras";
echo 
duplicar_caracteres($cadena);
?>
  #4 (permalink)  
Antiguo 04/08/2010, 17:34
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Estimado helacer, muchas gracias por su ayuda, su código funciona ok... Pero,
$dato=$dato. no entiendo por qué el segundo $dato si esta variable no está declarada ??

¿Cómo funciona eso?

Bueno creo entender ahora, la primera vez como $dato no existe guarda en memoria lo siguiente (las letras repetidas) por segunta vez entonces ya existe $dato entonces punto y lo siguiente.

Estoy interesado en darle solución al código que puse al comienzo porque es del libro de Luis M Cabezas Granado por el cual aprendo a falta de otro mejor. Imagino que cuando el declara la variable $cadena_auxiliar = "" quiere decir que el primer espacio es vacío y todo debe comportarse como el código que me recomiendas y por qué no funciona entonces... Disculpa la insistencia, espero me compredas..

Última edición por GatorV; 05/08/2010 a las 09:03
  #5 (permalink)  
Antiguo 04/08/2010, 17:58
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: código no funciona (ayuda)

buenas compañero en ese caso el esta limpiando o dejando vacia la variable cadena auxiliar para asegurarse que solo se llene con los datos que estas colocando en la siguiente variable espero t aclare la duda
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 04/08/2010, 18:17
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: código no funciona (ayuda)

Lo que noto es que él no extrae la cadena como lo haces tú con substr( ) creo que lo hace con las llaves $cadena{$x} o sea declarando esto {$x} pregunto porque él habla en el libro de la importancia de llaves y corchetes para trabajar con la cadenas de caracteres, será ahí donde falla el código ??
  #7 (permalink)  
Antiguo 04/08/2010, 18:30
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Respuesta: código no funciona (ayuda)

PHP te ofrece la posibilidad de tratar a las cadenas como arrays. Se va a entender mejor con un ejemplo:
Código PHP:
Ver original
  1. $cadena = "abcde";
  2.  
  3. // Usando corchetes
  4. echo $cadena[0]; // muestra a
  5. echo $cadena[2]; // muestra c
  6.  
  7. // Usando llaves
  8. // Es lo mismo hacer
  9. echo $cadena{0}; // muestra a
  10. echo $cadena{2}; // muestra c

No se que te dira el libro, pero estoy casi seguro que en el manual oficial recomiendan usar los corchetes (que sirven tanto para cadenas como para arrays) en vez de llaves (solo en cadenas).

EDITADO:
Si te confirmo esto, usa corchetes en vez de llaves, en http://www.php.net/manual/es/language.types.string.php dice esto:
Cita:
Note: String s may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 5.3.0. Use square brackets instead, such as $str[42].
(no puedo creer que esta pagina del manual no este disponible en español )


Saludos!

Última edición por fran86; 04/08/2010 a las 18:42
  #8 (permalink)  
Antiguo 04/08/2010, 18:32
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Respuesta: código no funciona (ayuda)

Creo que lo que posteaste al principio no funciona porque le falta un . (punto) que concatene:
Código PHP:
Ver original
  1. $cadena_auxiliar = $cadena_auxiliar.$cadena{$x}.$cadena{$x};
  #9 (permalink)  
Antiguo 04/08/2010, 19:44
 
Fecha de Ingreso: enero-2010
Mensajes: 239
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: código no funciona (ayuda)

Graciassss Fran86, era eso, faltaba un punto..
Gracias a todos por la ayuda, el error del código me sirvió para que ustedes me dejaran claro el asunto.

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




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