2014-05-21 1 views
0

Je travaille sur une fonction de classe PHP en utilisant foreach sur les chaînes de tableau. Il est utilisé pour interroger la base de données et il devrait retourner un nouveau tableau lorsqu'il est appelé.Retourne un tableau à partir de la fonction de classe foreach

Le code ressemble à ceci:

public function myForeach() { 

    $arrayOne = $getData; 

    foreach($arrayOne as $key=>$value){ 
     $query = // query the value in the DB; 
    } 
    return $query; 
}else { 
    return false; 

} 

Je suis assez sûr que je manque quelque chose ici. Ce que je veux que la sortie soit un nouveau tableau de la requête $.

À l'heure actuelle, il retourne un tableau comme:

array(1) { [0]=> string(14) "returnedstring" } 

Un tableau de chaînes unique, plutôt que chaque valeur du foreach.

Je veux retourner ceci:

array(2) { [0]=> string(15) "returnedstring1" [1]=> string(15) "returnedstring2"} 
+0

Vous êtes * renvoyant * à la première itération de votre boucle 'foreach'. Bien sûr, il ne va que renvoyer une seule valeur – Phil

+0

Votre instruction 'return' d'utilisation dans' foreach' et ce code revient de la fonction après la première itération. Vous devez fusionner ('array_merge') la requête de résultat dans' foreach' et le prochain retour. – ZhukV

+0

Modifier, je viens de l'essayer sans cela, il renvoie toujours une seule chaîne – user3143218

Répondre

2

Vous retourner le paramètre $query dans la foreach, alors vous avez un else qui DonT tenir dans partout (else nécessite un if être un else pour). Vous devrez également append la valeur au tableau:

public function myForeach() { 
    $arrayOne = $getData; 
    $query = array(); // Create the $query array. 
    foreach($arrayOne as $key=>$value){ 
    $query[] = // Append the query array with whatever value you have. 
    } 
    return $query; // Return the array when the for-each loop is done. 
} 
+0

que voulez-vous dire par append. pourriez-vous élaborer un peu? – user3143218

+0

qui a fonctionné! merci pour votre aide – user3143218

+0

Chaque itération de la boucle foreach, vous affectez le paramètre '$ query' avec la valeur que vous voulez ajouter au tableau (' $ query = /../ '), ce qui signifie qu'il va remplacer toute valeur vous l'avez stocké avec la nouvelle valeur. Vous devrez ajouter un nouvel objet au tableau, ce que vous pouvez faire en utilisant: '$ query [] = /../'. – Jite

0

changer votre code,

$query = // query the value in the DB; 
return $query; 

Pour

$query[] = // query the value in the DB; 

Note: pas si() est visible ailleurs?

Questions connexes