web-dev-qa-db-fra.com

Implode les données d'un tableau multidimensionnel

Je suis novice chez PHP et j'ai besoin d'une solution rapide au problème suivant, mais je n'arrive pas à en trouver une:

J'ai un tableau multidimensionnel comme si

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
        )
)

Je souhaite utiliser le implode() pour renvoyer en quelque sorte une chaîne séparée par des virgules contenant les valeurs de la clé tag_name comme suit 

google, technology

Est-il possible d'obtenir cet effet avec cette fonction? Sinon, veuillez suggérer une solution alternative.

61

Assez facile:

$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


et nouveau dans php v5.5.0, array_column :

echo implode(', ', array_column($input, 'tag_name'));
142
Yoshi
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
8
deceze

array_map est une fonction de rappel permettant de jouer avec le tableau passé . Cela devrait fonctionner.

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

Bien que cette question soit liée à la conversion de chaînes, je suis tombée sur cette question tout en recherchant un moyen simple d'écrire des tableaux dans mes fichiers journaux. Si vous souhaitez simplement obtenir des informations et ne vous souciez pas de la propreté exacte d'une chaîne, vous pouvez envisager:

json_encode($array)
7
Msencenb

très simple aller pour cela

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

Si vous voulez "tag_name" avec "blogTags_id" associé, utilisez: (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)));
1
Tarik

Dans cette situation, implode ($ array, ','); Cela fonctionne, car vous ne voulez que les valeurs. Dans PHP 5.6, travaillez pour moi.

Si vous voulez imploser les clés et les valeurs dans un comme:
blogTags_id: 1
tag_name: google

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

Désolé, je comprends mal, car le titre "Implode les données d’un tableau multidimensionnel". Eh bien, ma réponse répond toujours quand même, peut aider quelqu'un, alors ne le supprimera pas.

0
Atanas Atanasov