web-dev-qa-db-fra.com

Créer un tableau associatif à partir de la boucle Foreach PHP

J'ai cette boucle foreach:

foreach($aMbs as $aMemb){
    $ignoreArray = array(1,3);
    if (!in_array($aMemb['ID'],$ignoreArray)){ 
        $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);
    }
}

Cela imprime les bons champs mais ce sont des tableaux à l'intérieur des tableaux. J'ai besoin de la boucle foreach pour sortir un tableau simple comme celui-ci:

$aMemberships = array('1' => 'Standard', '2' => 'Silver');

Qu'est-ce que je fais mal?

21
tmartin314

Vous devez modifier votre affectation $ aMemberships

$aMemberships[] = $aMemb['Name']; 

Si vous voulez un tableau

$aMemberships[$aMemb['ID']] = $aMemb['Name'];

si vous voulez une carte.

Ce que vous faites, c'est d'ajouter un tableau à un tableau.

44
GWW

Tableau associatif dans l'instruction foreach:

foreach($nodeids as $field => $value) {

  $field_data[$field]=$value;

}

Production:

Array(
$field => $value,
$field => $value
...
);

insertion dans CodeIgniter:

$res=$this->db->insert($bundle_table,$field_data);
18
ShivarajRH

Au lieu de

$aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

Essayer

$aMemberships[$aMemb['ID']] = $aMemb['Name'];
9
Tim Gautier

Votre code existant utilise une clé incrémentielle et utilise le tableau comme valeur correspondante. Pour faire make $aMemberships un tableau associatif dont la clé est $aMemb['ID'] et la valeur étant $aMemb['Name'] vous devez changer

    $aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

dans la boucle foreach pour:

    $aMemberships[$aMemb['ID']] = $aMemb['Name']);
3
codaddict

il imprime un tableau de tableaux parce que vous le faites dans cette ligne

$aMemberships[] = array($aMemb['ID'] => $aMemb['Name']);

où vous [] après une variable, vous indiquez d'attribuer la valeur dans une nouvelle ligne du tableau et vous insérez un autre tableau dans cette ligne

vous pouvez donc utiliser les exemples que les autres ont déjà donnés ou vous pouvez utiliser cette méthode:

int array_Push ( array &$array , mixed $var [, mixed $... ] )

voici un exemple que vous pouvez trouver dans l'api

<?php
$stack = array(0=>"orange",1=>"banana");
array_Push($stack, 2=>"Apple",3=>"raspberry");
print_r($stack);
?>

//prints
Array
(
    [0] => orange
    [1] => banana
    [2] => Apple
    [3] => raspberry
)

http://php.net/manual/en/function.array-Push.php

1
mklfarha

Vous obtenez key and value d'un tableau associatif dans la boucle foreach et créez un associatif avec des paires clé/valeur.

$aMemberships=array();//define array
foreach($aMbs as $key=>$value){
    $ignoreArray = array(1,3);
    if (!in_array($key,$ignoreArray)){ 
        $aMemberships[$key] = $value;
    }
}

Il vous donnera une sortie attendue:

array('1' => 'Standard', '2' => 'Silver');
0
Gufran Hasan