Foros del Web » Programando para Internet » PHP »

Problema con funcion

Estas en el tema de Problema con funcion en el foro de PHP en Foros del Web. Hola gente, mi consulta es sobre esta funcion a ver si alguien me puede ayudar. La funcion recibe como parametro la cadena $msje: esta cadena ...
  #1 (permalink)  
Antiguo 17/02/2012, 15:21
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Exclamación Problema con funcion

Hola gente, mi consulta es sobre esta funcion a ver si alguien me puede ayudar.
La funcion recibe como parametro la cadena $msje: esta cadena se le ingresa el campo relleno de autores:

Apellido1, Nombre1
Apellido2, Nombre2
Apellido3, Nombre3

Necesito guardar cada apellido, nombre en una posicion del vector $autores y luego mostrarlas. Fuera del if, si yo imprimo $autores[0], $autores[1], $autores[2], me muestra bien cada autor. El problema es que dentro del if con la variable i no me imprime cada posicion del vector $autores.

¿Alguién ve donde está mi problema? Muchas gracias, adjunto mas abajo el algoritmo. Saludos!!!


function formatoAutor($msje)
{
$autores = explode("\n", $msje); /*Vector donde en cada posicion esta el autor completo*/

$totalAutores = count($autores);

for($i=0; $i<$totalAutores; $i++)
{
echo $autores[i];
echo "<br>";
}

}
  #2 (permalink)  
Antiguo 17/02/2012, 15:51
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con funcion

Código PHP:
Ver original
  1. echo $autores[i] //MAL;
  2. echo $autores[$i]; //BIEN

Me parece mejor usar un foreach

Código PHP:
Ver original
  1. function formatoAutor($msje) {
  2.     $autores = explode("\n", $msje);
  3.  
  4.     foreach ($autores as $autor) {
  5.        echo "$autor<br />";
  6.     }
  7. }


Código PHP:
Ver original
  1. <?php
  2.  
  3. $str = 'Apellido1, Nombre1
  4. Apellido2, Nombre2
  5. Apellido3, Nombre3';
  6.  
  7. function formatoAutor($msje) {
  8.     $autores = explode(PHP_EOL, $msje);
  9.  
  10.     foreach ($autores as $autor) {
  11.        echo "$autor<br />";
  12.     }
  13. }
  14.  
  15. formatoAutor($str);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 17/02/2012, 15:53
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Problema con funcion

De donde sacas el string $msje?
  #4 (permalink)  
Antiguo 17/02/2012, 16:02
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Problema con funcion

Esto te debe de funcionar, no es suficiente manejar el \n, debes utilizar \r\n para que te tome el "Carrier Return" y el "New Line".

Código PHP:
<?php
function formatoAutor($msje)
{
$autores explode("\r\n"$msje);     /*Vector donde en cada posicion esta el autor completo*/

$totalAutores count($autores); 

return 
$autores;
}

$string "Apellido1, Nombre1
Apellido2, Nombre2
Apellido3, Nombre3"
;

$arreglo formatoAutor($string);

echo 
$arreglo[0];
echo 
$arreglo[1];
echo 
$arreglo[2];
?>
  #5 (permalink)  
Antiguo 17/02/2012, 17:20
 
Fecha de Ingreso: mayo-2010
Mensajes: 10
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Problema con funcion

Cita:
Iniciado por alvidales Ver Mensaje
De donde sacas el string $msje?
Lo recibe del main mas arriba!

Etiquetas: funcion
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 17:23.