2010-06-15 6 views
83

Besoin de stocker les valeurs de la boucle foreach dans un tableau, besoin d'aide pour faire cela. Le code ci-dessous ne fonctionne pas, ne stocke que la dernière valeur, essayé $ items. = ..., mais cela ne fait pas non plus l'affaire, toute aide sera appréciée.Comment stocker les valeurs de la boucle foreach dans un tableau?

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

print_r($items); 
?> 
+8

'. =' Ajoute du texte. '[]' ajoute sur un tableau. – Skilldrick

Répondre

192

Déclarez le tableau $items en dehors de la boucle et utiliser $items[] pour ajouter des éléments au tableau:

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

print_r($items); 
+7

De même, n'extrayez pas la clé ('$ i') si vous ne l'utilisez pas. –

+0

Déclarer '$ items = array();' avant foreach n'est même pas nécessaire, non? php va juste créer un tableau vide –

14

Utilisez

$items[] = $username; 
+6

Assurez-vous simplement que $ items = array(); 'apparaît avant la boucle. – Skilldrick

+0

Pouvez-vous expliquer pourquoi vous devez déclarer $ items = array(); avant la boucle. J'ai fait quelque chose comme ça et je ne l'ai pas déclaré et cela fonctionne toujours. Est-il préférable de l'ajouter ou n'est-ce pas nécessaire? – robk27

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

Pas besoin de $ count stuff. Juste $ array [] = $ thing; – Crone

7

Essayez

$items = array_values ($group_membership); 
+1

Eh bien, je suppose que la boucle foreach fait plus que cela, sinon c'est la meilleure solution. –

2

Vous pouvez essayer de faire ma réponse,

vous avez écrit ceci:

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

print_r($items); 
?> 

Et dans votre cas, je ferais ceci:

<?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; 
} ?> 

Comme vous le montrez dans votre question, il semble que vous avez besoin d'un tableau de noms d'utilisateurs qui sont dans un groupe particulier :) Dans ce cas, je préfère une bonne requête sql avec une simple boucle while;)

<?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 est plus rapide, mais le dernier exemple est seulement le résultat d'une observation. :)

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

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

Essayez simplement ce qui précède dans votre code.