2010-09-30 23 views
21

ho questo ciclo foreach:Crea array associativo dal ciclo Foreach PHP

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

Questo stampa i campi giusti, ma sono gli array all'interno di array. Ho bisogno del ciclo foreach per produrre un semplice array come questo:

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

Che cosa sto facendo di sbagliato?

risposta

38

È necessario modificare i vostri $ aMemberships assegnazione

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

Se si desidera una matrice

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

se si desidera una mappa.

Quello che stai facendo è aggiungere un array a un array.

+0

Ogni risposta era la stessa. Ho avuto difficoltà a sceglierne uno per votare.+1 per spiegare che stava aggiungendo un array a un array. – stevendesu

8

Invece di

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

Provate

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

Passavo di, hanno trovato la risposta utile! +1 e grazie – Sean

3

Il codice esistente utilizza la chiave incrementale e utilizza la matrice come valore corrispondente. Per rendere $aMemberships un array associativo con chiave come $aMemb['ID'] e il valore di essere $aMemb['Name'] è necessario modificare

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

nel ciclo foreach per:

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

esso stampa un array di array, perché si sta facendo quindi, in questa linea

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

dove [] dopo una variabile Stai indica per assegnare ° e valore in una nuova riga della matrice e si sta inserendo un altro array in tale riga

modo da poter utilizzare le esempi altri haver già dato oppure è possibile utilizzare questo metodo:

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

qui è un esempio che si può trovare nel 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

14

associativo matrice in un'istruzione foreach:

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

    $field_data[$field]=$value; 

} 

uscita:

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

inserimento in CodeIgniter:

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