2011-01-31 24 views
7

Così, ho un array come questo:Valori matrice di campo?

Array 
(
    [0] => Array 
     (
      [name] => Something 
     ) 

    [1] => Array 
     (
      [name] => Something else 
     ) 

    [2] => Array 
     (
      [name] => Something else.... 
     ) 
) 

Esiste un modo semplice di implodere i valori in una stringa, come questo:

echo implode(', ', $array[index]['name']) // result: Something, Something else, Something else... 

senza utilizzando un ciclo di concate i valori, in questo modo:

foreach ($array as $key => $val) { 
    $string .= ', ' . $val; 
} 
$string = substr($string, 0, -2); // Needed to cut of the last ', ' 
+0

Non lo so, 'implode()'? –

+2

@Rafe Kettler: Sì, ma funziona solo su array monodimensionali. – BoltClock

risposta

21

modo più semplice, quando si dispone di un solo elemento in array interno:

$values = array_map('array_pop', $array); 
$imploded = implode(',', $values); 
15

È possibile utilizzare un comune array_map() trucco per "flatte n "la matrice multidimensionale quindi implode() il risultato" appiattito ", ma internamente PHP scorre ancora attraverso l'array quando si chiama array_map().

function get_name($i) { 
    return $i['name']; 
} 

echo implode(', ', array_map('get_name', $array)); 
+1

Sì, ma PHP lo fa molto più velocemente. Grazie. – qwerty

+2

Sarebbe preferibile utilizzare array_pop(). Se al tuo secondo livello vengono fornite chiavi aggiuntive, non è garantito che il tasto "nome" sia il primo nello stack. Programmazione difensiva FTW. –

+2

In un'altra nota, se si è scettici sulla creazione di una nuova funzione nello spazio dei nomi, utilizzare o chiusure o create_function. echo implode (',', array_map (create_function ('$ a', 'return $ a ["nome"];'), $ array)); –

7

In PHP 5> = 5.5.0

implode(', ', array_column($array, 'name')) 
+1

questo ha bisogno di più voti positivi! – Micah

Problemi correlati