Foros del Web » Programando para Internet » PHP »

duda ForEach

Estas en el tema de duda ForEach en el foro de PHP en Foros del Web. Hola amigos! tengo una duda, y es que me gustaria que en el final no me pusiera la coma (,) cómo puedo hacerlo? esta es ...
  #1 (permalink)  
Antiguo 18/03/2009, 05:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
duda ForEach

Hola amigos!
tengo una duda, y es que me gustaria que en el final no me pusiera la coma (,)
cómo puedo hacerlo?
esta es mi variable
Código:
	$ds = array(
		"id"=>array(				"name"=>"id",					"type"=>"int",						"mapping"=>"id"),
		"cif"=>array(				"name"=>"cif", 					"type"=>"string",      				"mapping"=>"cif"),
		"alias"=>array(				"name"=>"alias", 				"type"=>"string", 					"mapping"=>"alias"),
		"name"=>array(				"name"=>"name", 				"type"=>"string", 					"mapping"=>"name"),
		"address"=>array(			"name"=>"address", 				"type"=>"string",      				"mapping"=>"address"),
		"phone"=>array(				"name"=>"phone", 				"type"=>"string",      				"mapping"=>"phone"),
		"fax"=>array(				"name"=>"fax", 					"type"=>"string",      				"mapping"=>"fax"),
		"email"=>array(				"name"=>"email", 				"type"=>"string",   				"mapping"=>"email"),
		"contact"=>array(			"name"=>"contact", 				"type"=>"string",   				"mapping"=>"contact"),
		"contact_phone"=>array(		"name"=>"contact_phone", 		"type"=>"string",   				"mapping"=>"contact_phone"),
		"contact_email"=>array(		"name"=>"contact_email", 		"type"=>"string",   				"mapping"=>"contact_email"),
		"comments"=>array(			"name"=>"comments", 			"type"=>"string",   				"mapping"=>"comments"),
		"logo"=>array(				"name"=>"logo", 				"type"=>"string",   				"mapping"=>"logo")
	);
mi función:

Código:
	foreach ($ds as $key => $value ){
		$dataStore.="{";
		foreach ($value as $key2 => $value2){
			$dataStore.=$key2.": '".$value2."', ";
		}
		$dataStore.="},";
	}
	echo "<br><br><br>";
	echo $dataStore;
el codigo de arriba me devuelve este codigo
Código:
{name: 'id', type: 'int', mapping: 'id', },
{name: 'cif', type: 'string', mapping: 'cif', },
{name: 'alias', type: 'string', mapping: 'alias', },
{name: 'name', type: 'string', mapping: 'name', },
{name: 'address', type: 'string', mapping: 'address', },
{name: 'phone', type: 'string', mapping: 'phone', },
{name: 'fax', type: 'string', mapping: 'fax', },
{name: 'email', type: 'string', mapping: 'email', },
{name: 'contact', type: 'string', mapping: 'contact', },
{name: 'contact_phone', type: 'string', mapping: 'contact_phone', },
{name: 'contact_email', type: 'string', mapping: 'contact_email', },
{name: 'comments', type: 'string', mapping: 'comments', },
{name: 'logo', type: 'string', mapping: 'logo', }, 

Como podeis ver, entre ellos tengo que separarlos por (,) pero el último no,
Me podeis hechar una mano?


Gracias
  #2 (permalink)  
Antiguo 18/03/2009, 05:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: duda ForEach

Cuando hagas
$dataStore.=$key2.": '".$value2."', ";
Busca un modo de obtener el nº de elementos del array y cuando llegues al último, que no te inserte la ','
  #3 (permalink)  
Antiguo 18/03/2009, 05:37
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: duda ForEach

Hola Laufwerk,


Tenés que buscar alguna forma de saber cual es el último para no poner la ",".
Si el array() tiene una cantidad fija de elementos haces directamente un for() con los valores q conocés, pero si no sabes la cantidad las contás antes con count() para usar el dato en el for()

De todas formas me parece que estás queriendo transormar tu array() en un formato Json no?
  #4 (permalink)  
Antiguo 18/03/2009, 05:46
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: duda ForEach

Bueno... me rectifico, con un for() seguramente no es la mejor manera de recorrer un array() asi que mejor segí usando un foreach pero con un contador para saber cual es el útlimo.
  #5 (permalink)  
Antiguo 18/03/2009, 07:01
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: duda ForEach

proba asi:
Código PHP:
<?php 

foreach ($ds as $key => $value ){
        
$dataStore.="{";
        
$i="1";
        foreach (
$value as $key2 => $value2){
            
$cant=count($value);            
            if(
$cant $i){
                
$dataStore.=$key2.": '".$value2."', ";
            }else{
                
$dataStore.=$key2.": '".$value2."' ";
            }                
            
$i++;
        }
        
$dataStore.="},";
}
    echo 
"<br><br><br>";
    echo 
$dataStore;
?>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #6 (permalink)  
Antiguo 18/03/2009, 07:03
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: duda ForEach

Código PHP:
    foreach ($ds as $key => $value ){
        
$dataStore.="{";
                
$temp = array();
        foreach (
$value as $key2 => $value2){
            
$temp[] = $key2.": '".$value2."'";
        }
        
$dataStore.= implode(",",$temp)."},";
    }
    echo 
"<br><br><br>";
    echo 
$dataStore
  #7 (permalink)  
Antiguo 18/03/2009, 07:55
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: duda ForEach

Asi es lisandro Arg lo quiero transformar a Json para configurar el DataStore de la libreria EXTJS.

Pero como me ha dicho farra lo he solucionado.
Asi me quedo el codigo
Código PHP:
function getDataStore($ds){
    
$dataSore="";
//    echo count($ds)."<br>";
    
$col_actual=1;
    
$columnas=count($ds);
    foreach (
$ds as $key => $value ){
//            echo "Key: $key; Value: $value<br />\n";
        
$dataStore.="{";
        
$param_actual=1;
        
$parametros=count($value);            
        foreach (
$value as $key2 => $value2){
            if(
$param_actual==$parametros){
//            echo "Sin coma";
                
$dataStore.=$key2.": ".$value2;
            }else{
//            echo "Con coma";
                
$dataStore.=$key2.": ".$value2.", ";
            }                
            
$param_actual++;        
        }
        if (
$col_actual == $columnas){
            
$dataStore.="}";
        }
        else{
            
$dataStore.="},";
        }
        
$col_actual++;
    }
//    echo "<br><br><br>";
//    echo "DATASTORE";
//    echo $dataStore;
//    echo "<br><br><br>";
    
    
return $dataSore;


Saludos y gracias por vuestra rapidez!!
  #8 (permalink)  
Antiguo 18/03/2009, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: duda ForEach

No te sirve usar mejor json_encode?

Saludos.
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:11.