Foros del Web » Programando para Internet » PHP »

Problemas con el foreach y explode

Estas en el tema de Problemas con el foreach y explode en el foro de PHP en Foros del Web. Tengo un problema en este código. Lo que hace es decir según la terminación de la palabra, si hay que agregar s, es o nada ...
  #1 (permalink)  
Antiguo 17/02/2011, 06:46
 
Fecha de Ingreso: diciembre-2010
Ubicación: Argentina
Mensajes: 42
Antigüedad: 13 años, 11 meses
Puntos: 0
Problemas con el foreach y explode

Tengo un problema en este código. Lo que hace es decir según la terminación de la palabra, si hay que agregar s, es o nada (si termina en s)
$nombre lo imprime bien y $cantidad (cantidad de letras) también. Luego, $ultimo queda vacío (debería imprimir la última letra). Por otro lado, probé este código sin foreach/explode e imprimió correctamente. Por eso el título del post ¿Alguna ayudita?

Cita:
<?php
$archivo = file('archivotxt');
foreach ($archivo as $line_num => $line) {
$nombre = $datos[0];
echo "nombre: ", $nombre , "/";
$cantidad= strlen($nombre)-1;
echo "letras: ", $cantidad, "/";
$ultimo= $nombre[$cantidad];
echo "ultima letra: ", $ultimo, "/";
echo "número último: ", ord($ultimo), "/";
switch($numero){
case 97: case 101: case 105: case 111: case 117: case 98: case 99: case 103: case 109: case 112: case 116:
print (" Se agrega una S --");
break;
case 115:
print (" No se agrega nada, ya es plural --");
break;
default:
print (" Se agrega ES --");
break;
}

$datos = explode("\n", $line); }
unset($datos);
?>
  #2 (permalink)  
Antiguo 17/02/2011, 07:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 9 meses
Puntos: 55
Respuesta: Problemas con el foreach y explode

foreach ($archivo as $line_num => $line) {
$nombre = $datos[0];

que es $datos ????

si estas en el foreach tienes que usar $line para el valor de la linea y $line_num para el numero de la linea.
  #3 (permalink)  
Antiguo 17/02/2011, 07:16
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Problemas con el foreach y explode

Cuando obtenes la cantidad de letras de una palabra y queres mostrar la ultima letra asi
$ultimo= $nombre[$cantidad]; te devuelve una posicion que no existe,
hace esto: $ultimo= $nombre[$cantidad-1];
recorda que la primer posicion del array comienza en cero.
  #4 (permalink)  
Antiguo 17/02/2011, 09:06
 
Fecha de Ingreso: diciembre-2010
Ubicación: Argentina
Mensajes: 42
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Problemas con el foreach y explode

Excelente Patriarka!! Excelente. Ahora sí sale la última letra y el código ASCII,un error que se produce, más que por distracción es por organización. Por no haber creado una nueva variable con el resultado - 1, nada habría pasado. Gracias!

Etiquetas: explode, foreach
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 08:27.