2010-06-15 5 views
83

Necesita almacenar valores del bucle foreach en una matriz, necesita ayuda para hacerlo. El siguiente código no funciona, solo almacena el último valor, intentó $ items. = ..., pero eso tampoco está funcionando, cualquier ayuda será apreciada.¿Cómo almacenar valores del bucle foreach en una matriz?

<?php 
foreach($group_membership as $i => $username) { 
$items = array($username); 
} 

print_r($items); 
?> 
+8

'. =' Añade texto. '[]' se agrega a una matriz. – Skilldrick

Respuesta

192

declarar la matriz $items fuera del bucle y utilizar $items[] para añadir elementos a la matriz:

$items = array(); 
foreach($group_membership as $username) { 
$items[] = $username; 
} 

print_r($items); 
+7

Además, no extraiga la clave ('$ i') si no va a usarla. –

+0

Declarando '$ items = array();' antes de foreach ni siquiera es necesario, ¿no? php solo creará una matriz vacía –

14

Uso

$items[] = $username; 
+6

Solo asegúrese de que '$ items = array();' aparezca antes del bucle. – Skilldrick

+0

Puedes ayudar a explicar por qué tienes que declarar $ items = array(); antes del ciclo Hice algo como esto y no lo declaró y todavía funciona. ¿Es mejor agregarlo o no es obligatorio? – robk27

3
<?php 
$items = array(); 
$count = 0; 
foreach($group_membership as $i => $username) { 
$items[$count++] = $username; 
} 
print_r($items); 
?> 
+1

No hay necesidad de $ contar cosas. Solo $ array [] = $ thing; – Crone

7

Trate

$items = array_values ($group_membership); 
+1

Bueno, supongo que el ciclo foreach está haciendo más que eso, de lo contrario, esta es la mejor solución. –

2

Usted puede tratar de hacer mi respuesta,

que escribió esto:

<?php 
foreach($group_membership as $i => $username) { 
    $items = array($username); 
} 

print_r($items); 
?> 

Y en tu caso me gustaría hacer esto:

<?php 
$items = array(); 
foreach ($group_membership as $username) { // If you need the pointer (but I don't think) you have to add '$i => ' before $username 
    $items[] = $username; 
} ?> 

A medida que muestra en su pregunta parece que necesita una matriz de nombres de usuario que están en un grupo particular :) En este caso, prefiero una buena consulta sql con un ciclo while simple;)

<?php 
$query = "SELECT `username` FROM group_membership AS gm LEFT JOIN users AS u ON gm.`idUser` = u.`idUser`"; 
$result = mysql_query($query); 
while ($record = mysql_fetch_array($result)) { \ 
    $items[] = $username; 
} 
?> 

while es más rápido, pero el último ejemplo es solo el resultado de una observación. :)

1
$items=array(); 
$j=0; 

foreach($group_membership as $i => $username){ 
    $items[$j++]=$username; 
} 

Simplemente intente lo de arriba en su código.

Cuestiones relacionadas