2011-03-26 18 views
13

tengo un bucle comoPHP Añadir coma para cada elemento, pero último

foreach ($_GET as $name => $value) { 
    echo "$value\n"; 
} 

Y quiero añadir una coma entre cada elemento por lo que termina así.

var1, var2, var3 

Desde que estoy usando foreach no tengo ninguna manera de saber qué número de iteración estoy en.

¿Cómo podría hacer eso?

+0

ninguna manera? Puede agregar un contador a su código manualmente. –

+0

¿No debería su resultado ser 'name: var1, name: var2, name: var3' then? – kjy112

+0

Lo siento por mi descuido, no miré todo el camino a través de mi fragmento. – giodamelio

Respuesta

0

Lo siento, no formulé mi pregunta correctamente. El awnser que trabajó para mí es

implode(', ', $_GET); 

Gracias, giodamelio

+0

no me dejará hasta mañana. – giodamelio

+0

woah solo tienes 14 años. Cuidate hermano. – kjy112

+0

@ kjy112 Gracias, definitivamente lo haré. La programación es increíble :) – giodamelio

3
$comma_separated = implode(", ", $_GET); 

echo $comma_separated; 

puede utilizar implosión y lograr que

+0

¿qué tal $ nombre? –

+0

pensó que solo quería los valores – kjy112

+0

¿por qué no lees su pregunta? –

0

Me suelen hacer algo como esto (pseudo código):

myVar 

for... { 
    myVar = i + "," 
} 

myVar = trimOffLastCharacter(myVar) 

echo myVar 
6

De esta manera:

$total = count($_GET); 
$i=0; 
foreach ($_GET as $name => $value) { 
    $i++; 
    echo "$name: $value"; 
    if ($i != $total) echo', '; 
} 

Explicación: usted encuentra el conteo total de todos los valores por conteo(). Cuando ejecuta el bucle foreach(), cuenta las iteraciones. Dentro del ciclo, dígale que repita "," cuando la iteración no sea la última (no es igual al recuento total de todos los valores).

30

Sólo construir su salida con su foreach y luego implosionar esa matriz y la salida el resultado:

$out = array(); 
foreach ($_GET as $name => $value) { 
    array_push($out, "$name: $value"); 
} 
echo implode(', ', $out); 
+0

hmmm .. rendimiento en grandes matrices? – Fr0zenFyr

+0

@ Fr0zenFyr, su matriz necesitaría ser bastante grande para tener un impacto en el rendimiento, realmente. Y si tienes una matriz tan grande, ¿por qué querrías tener una cadena de tus artículos separados por comas? Todo depende del contexto, aquí. En el maravilloso mundo de la codificación, no existe una solución mágica de talla única para todos. Te invito a que hagas una pregunta relacionada, describiendo tu problema exacto si * this * no es una solución viable para ti. –

+0

Realmente no tengo este problema, solo estaba comprobando la posibilidad con arreglos grandes si alguien quería construir un 'CSV', digamos. – Fr0zenFyr

1

También puede hacerlo de esta manera:

$output = ''; 
foreach ($_GET as $name => $value) { 
    $output = $output."$name: $value, "; 
} 
$output = substr($output, 0, -2); 

Lo cual hace que una gran cadena que usted puede dar salida. Diferentes métodos para diferentes estilos, realmente.

Cuestiones relacionadas