2013-05-23 12 views
55

Sono un novizio in PHP e ho bisogno di una soluzione rapida al seguente problema, ma non riesco a venire con un:Implode dati da un array multi-dimensionale

Ho un array multi-dimensionale in questo modo

Array 
(
    [0] => Array 
     (
      [blogTags_id] => 1 
      [tag_name] => google 
      [inserted_on] => 2013-05-22 09:51:34 
      [inserted_by] => 2 
     ) 

    [1] => Array 
     (
      [blogTags_id] => 2 
      [tag_name] => technology 
      [inserted_on] => 2013-05-22 09:51:34 
      [inserted_by] => 2 
     ) 
) 

voglio usare il implode() per tornare in qualche modo a valori di stringa contenente separati da virgola di tag_name chiave in questo modo.

google, technology 

È possibile ottenere questo effetto con tale funzione? In caso contrario, si prega di suggerire una soluzione alternativa.

risposta

119

abbastanza semplice:

$input = array(
    array(
    'tag_name' => 'google' 
), 
    array(
    'tag_name' => 'technology' 
) 
); 

echo implode(', ', array_map(function ($entry) { 
    return $entry['tag_name']; 
}, $input)); 

http://3v4l.org/ltBZ0


e di nuovo in php v5.5.0, array_column:

echo implode(', ', array_column($input, 'tag_name')); 
+4

Si noti che le chiusure sono supportate solo con PHP 5.3 o successivo. –

+1

La soluzione per> = 5.5.0 è perfetta! –

+0

A piedi con> 5,5 ... :) –

8
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array)) 
8

array_map è una funzione chiamata indietro, dove tu può giocare con l'array passato. questo dovrebbe funzionare.

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr)); 
4

molto semplice andare per questo

$str; 
foreach ($arrays as $arr) { 
$str .= $arr["tag_name"] . ","; 
} 
$str = trim($str, ',');//removes the final comma 
1

Se si vuole "tag_name" con l'uso associato "blogTags_id": (PHP> 5,5)

$blogDatas = array_column($your_multi_dim_array, 'tag_name', 'blogTags_id'); 
echo implode(', ', array_map(function ($k, $v) { return "$k: $v"; }, array_keys($blogDatas), array_values($blogDatas))); 
2

Anche se questa domanda è legata a conversione delle stringhe, mi sono imbattuto in questo mentre volevo un modo semplice per scrivere array nei miei file di registro. Se si desidera solo le informazioni, e non si preoccupano l'esatto la pulizia di una stringa si potrebbe prendere in considerazione:

json_encode($array) 
0

In questa situazione implode ($ array, ''); funzionerà, perché vuoi solo i valori. In PHP 5.6 lavora per me.

Se si vuole implodere le chiavi ed i valori in uno come:
blogTags_id: 1
tag_name: google

$toImplode=array(); 
foreach($array as $key => $value) { 
$toImplode[]= "$key: $value".'<br>'; 
} 
$imploded=implode('',$toImplode); 

Siamo spiacenti, ho capito male, lo stavano ristrutturando il titolo di "implodere i dati da un multi matrice tridimensionale ". Bene, la mia risposta risponde comunque in qualche modo, può aiutare qualcuno, quindi non lo eliminerà.