2009-10-02 12 views
0

Voici un exemple:PHP - foreach (tableau d'un tableau)

for($i=1; $i < 10; $i++){ 
    $marray[] = array($name, $email, $password); // Lets just say for now, there is real 
               // data for each online being input 
} 

foreach ($marray as $e){ 
    echo "Name: ". $e[0]; 
    echo "Email: ". $e[1]; 
} 

J'ai oublié de mentionner: Ce script fonctionne très bien sur mes deux serveurs. Mais, quand j'inclus array_unique avant que "Foreach" soit appelé, cela ne fonctionne pas, aucun message d'erreur ou quoi que ce soit.

+2

Alors qu'arrive-t-place? – Gumbo

+1

Quelle est la sortie attendue et quelle est la sortie réelle? – Randell

+0

laissez-moi deviner, vous avez oublié le point-virgule à la fin de votre ligne 'array_unique'? – SilentGhost

Répondre

0

Je voudrais vérifier quelle version de PHP les deux serveurs ont installés. vous pouvez le faire avec phpinfo(). Je ne peux pas penser à une autre raison pour laquelle cela fonctionnerait sur un serveur, mais pas sur un autre. Que voulez-vous dire par «ne reconnaît pas? Avez-vous des messages d'erreur? Si c'est vrai, que sont-ils?

+0

En fait j'ai oublié de mentionner. Ce script fonctionne très bien. Quand j'utilise "array_unique", c'est quand il échoue. Je ne reçois aucun message d'erreur, Il suffit de "foreachs" un enregistrement au lieu de l'exemple là-bas "10 enregistrements". –

+0

pouvez-vous poster le code qui utilise array_unique? – GSto

+0

Voici une découpe: \t $ q = mysql_query ($ strSQL); \t $ hold = array(); $ view = array(); \t \t tandis que (rez $ = mysql_fetch_array ($ q)) \t { \t \t vue $ [] = array (rez de $ [6], rez de $ [1], rez de $ [8], rez de $ [9 ]); $ Hold [] = array ($ rez [2], $ rez [3], $ rez [6]); \t} \t \t $ hold = array_unique ($ hold); \t trier ($ hold); \t $ view = array_unique ($ view); \t sort ($ view); \t foreach ($ en tant que $ u) { echo $ u [0]; } –

0

Welp, a figuré celui-ci sur moi-même. Au lieu de le rendre plus confus, je viens de mettre le texte initial dans une matière "explosée".

1

fonctionne bien pour moi:

$name = "Phill"; 
$email = "[email protected]"; 
$password = "[email protected]"; 

for($i=1; $i < 10; $i++){ 
    $marray[] = array($name, $email, $password); 

} 

foreach (array_unique($marray) as $e){ 
    echo "Name: ". $e[0]."<br />"; 
    echo "Email: ". $e[1]."<br />"; 
} 

Ceci est retourné:

Name: Phill 
Email: [email protected] 

Quelle version de PHP vous utilisez?

0

comme lu sur la documentation php:

Note: Notez que array_unique() ne vise pas à travailler sur des tableaux multidimensionnels.

(laid) si corriger "email + + email lastname" est la clé:

$uniqueUsers = array(); 
foreach ($users as $user) { 
    $uniqueUsers[$user['name'] . $user['lastname'] . $user['email']] = $user; 
} 

Je pense qu'il est préférable de construire directement (si possible) le tableau sans doublons.

0

Essayez celui-ci:

$mstorage = array(); 
    foreach ($marray as $e){ 
    if(in_array($email, $mstorage) === FALSE) { 
     echo "Name: ". $e[0]."<br />"; 
     echo "Email: ". $e[1]."<br />"; 
     array_push($mstorage, $email); 
    } 
}