84 votes

Retourner une seule colonne d'un tableau multidimensionnel

Je suis novice en 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 suit

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 veux utiliser le implode() pour retourner une chaîne de caractères séparée par des virgules contenant les valeurs de tag_name comme suit.

google, technology

Est-il possible d'obtenir cet effet avec la fonction susmentionnée ? Si ce n'est pas le cas, veuillez proposer une autre solution.

194voto

Yoshi Points 25790

C'est très simple :

$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'));

19voto

Msencenb Points 2313

Bien que cette question soit liée à la conversion de chaînes de caractères, je suis tombé sur ceci alors que je cherchais un moyen facile d'écrire des tableaux dans mes fichiers journaux. Si vous voulez juste l'information, et que vous ne vous souciez pas de la propreté d'une chaîne de caractères, vous pouvez envisager de le faire :

json_encode($array)

9voto

Farhan Points 143

array_map est une fonction de rappel, qui permet de jouer avec le tableau transmis. Cela devrait fonctionner.

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

8voto

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

6voto

Vigneswaran S Points 1942

Très simple à mettre en œuvre

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X