Foros del Web » Programando para Internet » PHP »

Foreach para esto....?

Estas en el tema de Foreach para esto....? en el foro de PHP en Foros del Web. Hola tengo un codigo con el cual tomo todas las zonas horarias validas del php y quisiera saber como hacer un foreach o otro ciclo...con ...
  #1 (permalink)  
Antiguo 31/07/2011, 10:33
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Foreach para esto....?

Hola tengo un codigo con el cual tomo todas las zonas horarias validas del php y quisiera saber como hacer un foreach o otro ciclo...con el cual Yo ingrese la capital...y me retorne la zona horaria...ya que el codigo que tengo suelta los resultados por ejemplo asi : (America/Caracas) => Caracas ...entonces tendria que ingresar el caracas y el ciclo busca en todo el array el Caracas y q me devuelva el (America/Caracas)...anexo el codigo con la cual hago lo de las zonas horarias

Código PHP:
<?php

$zones 
timezone_identifiers_list();
        
foreach (
$zones as $zone
{
    
$zone explode('/'$zone); // 0 => Continent, 1 => City
    
    // Only use "friendly" continent names
    
if ($zone[0] == 'Africa' || $zone[0] == 'America' || $zone[0] == 'Antarctica' || $zone[0] == 'Arctic' || $zone[0] == 'Asia' || $zone[0] == 'Atlantic' || $zone[0] == 'Australia' || $zone[0] == 'Europe' || $zone[0] == 'Indian' || $zone[0] == 'Pacific')
    {        
        if (isset(
$zone[1]) != '')
        {
            
$locations[$zone[0]][$zone[0]. '/' $zone[1]] = str_replace('_'' '$zone[1]); // Creates array(DateTimeZone => 'Friendly name')
        

    }
}
print_r($locations);

?>
  #2 (permalink)  
Antiguo 31/07/2011, 21:44
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

buenisimo eh....a nadie le gusta el tema....pero NO DICEN EL PORQ.....
  #3 (permalink)  
Antiguo 31/07/2011, 22:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Foreach para esto....?

¿no es obvio?: en el mismo ciclo tienes un ejemplo de comparación, si copias código al menos toma la tarea de interpretarlo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 31/07/2011, 22:05
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

es que yo trato de hacer uno....pero entonces no me rescata lo que es...o me muestra algo que no es...ya que por lo que veo esos son arrays multiples....y no se hacer un foreach de arrays multiples
  #5 (permalink)  
Antiguo 31/07/2011, 22:12
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
es que yo trato de hacer uno....pero entonces no me rescata lo que es...o me muestra algo que no es...ya que por lo que veo esos son arrays multiples....y no se hacer un foreach de arrays multiples
estás equivocado:

1 - si te fijas y haces un var_dump($zones); te darás cuenta que es un array unidimensional

2- el 2do array es resultado de la división de la cadena del elemento en cuestión, usando la función explode(), el cual devolverá un array Unidimensional también con 2 elementos correspondientes a región/ciudad

3- recuerda tener en cuenta el case-sensitive, a la hora de comparar

es decir, no existe array multidimensional, el 2do array siempre será de 2 elementos, debes de analizar, investigar y deducir como funciona la función y que hace, para luego adaptarla a tus necesidades, suerte
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 31/07/2011, 23:17
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Bueno creo que es lo que estas necesitando, lo hice rápido pero más o menos es la idea y sé que hay mejores formas de hacerlo.

Código PHP:
Ver original
  1. <?php
  2.  
  3. function ZonaHoraria($ciudad) {
  4.  
  5.     $ciudad = strtolower($ciudad);
  6.     $ciudad = str_replace(' ', '_', $ciudad);
  7.     $zonas = timezone_identifiers_list();
  8.  
  9.     if ($ciudad == 'utc') {
  10.         return 'UTC';
  11.     } else if ($ciudad == '') {
  12.         return false;
  13.     }
  14.  
  15.     foreach ($zonas as $z) {
  16.         $r = explode('/', $z);
  17.  
  18.         if (count($r) == 2 && strtolower($r[1]) == $ciudad) {
  19.             return $z;
  20.         } else if (count($r) == 3 && strtolower($r[2]) == $ciudad) {
  21.             return $z;
  22.         }
  23.     }
  24.  
  25.     return false;
  26. }
  27.  
  28. echo ZonaHoraria('buenos aires') . '<br />';
  29. echo ZonaHoraria('bogota') . '<br />';
  30. echo ZonaHoraria('utc');
__________________
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

Última edición por andresdzphp; 01/08/2011 a las 00:33 Razón: Fallas teclado
  #7 (permalink)  
Antiguo 01/08/2011, 09:45
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

Hola andresdzphp muchas gracias por tu codigo...pero me suelta un problemita

Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\page\index.php on line 96

esa linea de ese error pertenece a $ciudad = strtolower($ciudad); y le borro eso....y entonces me sigue dando el problema...que podra ser? gracias
  #8 (permalink)  
Antiguo 01/08/2011, 12:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
Hola andresdzphp muchas gracias por tu codigo...pero me suelta un problemita

Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\page\index.php on line 96

esa linea de ese error pertenece a $ciudad = strtolower($ciudad); y le borro eso....y entonces me sigue dando el problema...que podra ser? gracias
tendría que ver como lo estas usando, porque a mí me funciona perfectamente, acomodalo a tus necesidades o tomalo como ejemplo.
__________________
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
  #9 (permalink)  
Antiguo 01/08/2011, 18:47
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

ve...lo tengo en la primera parte del codigo....y le pongo por ejemplo de $capital Caracas...u otro y Me muestra ese mismo error....
  #10 (permalink)  
Antiguo 01/08/2011, 18:51
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
ve...lo tengo en la primera parte del codigo....y le pongo por ejemplo de $capital Caracas...u otro y Me muestra ese mismo error....
La verdad no sé que tenga el servidor donde lo estas probando, pero tanto en mi localhost como en:

http://andresdz.cz.cc/pruebas/prueba.php

funciona perfectamente. Que versión de PHP usas?
__________________
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

Última edición por andresdzphp; 01/08/2011 a las 19:07
  #11 (permalink)  
Antiguo 03/08/2011, 10:50
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

tengo el appserver 2.5.10 claro en windows
  #12 (permalink)  
Antiguo 03/08/2011, 11:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
tengo el appserver 2.5.10 claro en windows
Nunca me gustó appserv, además que se quedaron en la versión 5.2.6 de PHP. Intenta con Xampp o WampServer ambos con PHP 5.3.5

Además de que tu error viene de otra cosa, ahí no hay ni línea 96 donde te da error.

PD: no volveré a responder este post lleno de puntos negativos.

Última edición por andresdzphp; 03/08/2011 a las 11:19
  #13 (permalink)  
Antiguo 03/08/2011, 13:49
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
problema con foreach

Hola tengo un problema con este codigo...el error me lo da en el foreach en otro post nombraron que por el error podria ser culpa del editor...cambia ahora de dreamweaver a komodo el codigo es este

Código PHP:
<?php
$ciudad
="Caracas";
function 
ZonaHoraria($ciudad){
$ciudad=strtolower($ciudad);
$ciudad=str_replace(' ','_',$ciudad);
$zonas=timezone_identifiers_list();
if (
$ciudad == 'utc'){
return 
'UTC';
}else if (
$ciudad == ''){
return 
false;}*
foreach(
$zonas as $z) {
$rexplode('/'$z);
if (
count($r) == && strtolower($r[1]) == $ciudad) {
return 
$z;
} else if (
count($r) == && strtolower($r[2]) == $ciudad) {
return 
$z;
}
}
return 
false;
}
echo 
ZonaHoraria('buenos aires') . '<br />';
echo 
ZonaHoraria('bogota') . '<br />';
echo 
ZonaHoraria('utc');
?>
este es el error

Parse error: syntax error, unexpected T_FOREACH in C:\AppServ\www\sube\ciu.php on line 26

esa linea es esto foreach($zonas as $z) {
  #14 (permalink)  
Antiguo 03/08/2011, 13:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Foreach para esto....?

Obviamente no es culpa del editor, pero un buen editor te marca las lineas del error:
Cita:
return false;}*
¿Notas algo extraño ahí?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 03/08/2011, 13:58
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Lo que dijo el compañero arriba, además la función se usa así:

Código PHP:
Ver original
  1. echo ZonaHoraria('Caracas');

Edit: Ni copiandolo lo copias bien.
  #16 (permalink)  
Antiguo 03/08/2011, 14:03
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

jajaja ok mira ese codigo me devuelve un array con zonas horarias y unos numeros....y eso del return false}* eso fue un error mio cuando lo colocaba aqui...no me di cuenta ps en el editor lo tengo sin eso
  #17 (permalink)  
Antiguo 03/08/2011, 14:04
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

el bendito komodo...en la parte que dice foreach($zonas as $z) { me lo marca con una raya roja por abajo osea esta mal ps
  #18 (permalink)  
Antiguo 03/08/2011, 14:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
jajaja ok mira ese codigo me devuelve un array con zonas horarias y unos numeros....y eso del return false}* eso fue un error mio cuando lo colocaba aqui...no me di cuenta ps en el editor lo tengo sin eso
Que te cuesta pegar este código tal y como está te da la zona de caracas:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function ZonaHoraria($ciudad) {
  4.     $ciudad = strtolower($ciudad);
  5.     $ciudad = str_replace(' ', '_', $ciudad);
  6.     $zonas = timezone_identifiers_list();
  7.     if ($ciudad == 'utc') {
  8.         return 'UTC';
  9.     } else if ($ciudad == '') {
  10.         return false;
  11.     }
  12.     foreach ($zonas as $z) {
  13.         $r = explode('/', $z);
  14.         if (count($r) == 2 && strtolower($r[1]) == $ciudad) {
  15.             return $z;
  16.         } else if (count($r) == 3 && strtolower($r[2]) == $ciudad) {
  17.             return $z;
  18.         }
  19.     }
  20.     return false;
  21. }
  22.  
  23. echo ZonaHoraria('caracas');
  #19 (permalink)  
Antiguo 03/08/2011, 14:14
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

vea compañero...es algo que tiene foros del web..XD porq mire...cuando uste me publica el codigo yo le doy a ver original...se me abre una ventanita...y de alli lo copio....y asi me sale mal....ahora lo copie directo en la misma publicacion sin abrir ventanita ni nada...y ahora si le dio por mostrarme la zona horaria perfectamente...dios mio QUE PENA CON USTEDES.

DE VERDAD DISCULPENME...QUE BOBADA LO QUE ME SUCEDIO A LA FINAL NO ERA NADA DE LO QUE DECIAMOS SI NO DE DONDE YO LO COPIABA o.O DISCÚLPENME DE VERDAD
  #20 (permalink)  
Antiguo 03/08/2011, 14:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Foreach para esto....?

Cita:
Iniciado por eduardo160 Ver Mensaje
el bendito komodo...en la parte que dice foreach($zonas as $z) { me lo marca con una raya roja por abajo osea esta mal ps
No, aunque el error te lo marque en cierta linea realmente o es ahí, o en la linea anterior de código.

Esa es una regla normal, y un tanto rara de PHP, pero así funciona.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #21 (permalink)  
Antiguo 03/08/2011, 14:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Foreach para esto....?

Gracias a Dios lo solucionaste que tema tan malo
  #22 (permalink)  
Antiguo 03/08/2011, 14:19
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

no ps claro eso que dice usted es muy cierto me ha sucedido bastante...y cuando me da un error asi siempre me voy a la linea anterior jaja....PERO DE VERDAD DISCULPEN...EL ERROR ERA COMO YO LO COPIABA o.O DISCULPEN
  #23 (permalink)  
Antiguo 03/08/2011, 14:20
 
Fecha de Ingreso: julio-2010
Mensajes: 523
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Foreach para esto....?

jajaja no amigo no es que sea un mal tema...es que a el problema no le encontrabamos solucion bueno pero asi como me ha sucedido le podra suceder a cualquiera de ustedes asi que ya saben...si les da un error parecido es porq lo estan copiando donde no es...bueno en dicho caso de que todo paresca estar bien...DISCULPEN :)

Etiquetas: 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 21:26.