J'ai ce code:
366 367 368 369 370 371 372 373 374
et le print_r imprime ces valeurs:
if(is_array($body)){ foreach ($body as $key => $member) { $contacts = $member->id; print_r($contacts); } return $contacts; }
mais il ne renvoie que la valeur 374 pourquoi? Je veux d'abord qu'il renvoie 366 puis 367 puis 368 .... et ainsi de suite. ce qui me manque?
6 Réponses :
if(is_array($body)){ $contacts = array(); foreach ($body as $key => $member) { $contacts[] = $member->id; } return $contacts; } if you return only $contacts, it only gets one value.
veuillez éviter de n'écrire que du code dans la réponse. Veuillez l'expliquer pour le rendre plus compréhensible.
Je mets à jour ma réponse, puis réessaye.
Maintenant, vous obtenez un tableau.
Dans la boucle, vous imprimez chaque nombre.
Mais dans $ contacts
il n'y a toujours que le dernier numéro. $ contacts
n'est pas un tableau.
Essayez $ contacts [] = $ member-> id;
Votre code doit être:
$contacts = array(); if(is_array($body)){ foreach ($body as $key => $member) { $contacts[] = $member->id; //print_r($contacts); } //return $contacts; } print_r($contacts);
Il n'est pas nécessaire d'utiliser return s'il n'y a pas de fonction.
Tout d'abord, laissez-moi vous expliquer votre code.
vous souhaitez afficher un tableau d'identifiant de membre.
donc dans votre code, vous devez déclarer le tableau $ contract et y pousser $ member-> id
en boucle.
mais dans votre code, vous ne le poussez pas, vous réaffectez simplement $ member-> id
à chaque fois en boucle pour expliquer pourquoi il n'affichera que le dernier $ member-> id
.
votre code devrait devenir ci-dessous.
if(is_array($body)){ // declared $contacts as array $contacts = []; foreach ($body as $key => $member) { // push memberId to contracts array $contacts[] = $member->id; } print_r($contacts); }
Si vous n'avez besoin que d'une seule colonne des données (et en supposant que vous utilisez PHP 7+), vous pouvez utiliser array_column ()
pour extraire les données sans utiliser de boucle ...
$contacts = array_column($member, 'id');
Vous devez créer une variable avec un tableau vide (par exemple $ memberIds
), puis dans la boucle foreach, ajouter la valeur du membre / contact en boucle au tableau. Dans votre cas, vous n'ajoutez pas d'identifiants à la variable $ contacts
, mais changez toujours la valeur d'origine.
La meilleure solution pour vous peut donc ressembler à:
if(is_array($body)){ $contacts = []; // defining empty array foreach ($body as $key => $member) { $contacts[] = $member->id; // appending member's id to the array of contacts } print_r($contacts); // Now you can print all ID's }
Faites-moi savoir en cas de questions supplémentaires :)
Je pense qu'il y a un malentendu fondamental sur le fonctionnement d'une instruction
return
dans unefonction
. Il ne peut y avoir qu'un seul retour par fonction. Ainsi, lorsque vous appelez une fonction une seule fois, vous ne pourrez pas obtenir le comportement souhaité en obtenant 366, puis 367 et ainsi de suite. Vous avez quelques choix: 1) aller avec les solutions de tableau suggérées par les autres 2) faire votre logique pour chaque élément dans la boucleforeach
. 3) reconcevez votre fonction. php.net/manual/en/function.return.php < a href = "https://www.php.net/manual/en/function.array.php" rel = "nofollow noreferrer"> php.net/manual/en/function.array.php php.net/manual/en/control-structures.foreach.php a >