11
votes

Implorez des valeurs de tableau?

Alors, j'ai un tableau comme celui-ci:

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


1 commentaires

@Rafe Kettler: Ouais mais cela ne fonctionne que sur des tableaux monocensionnels.


3 Réponses :


18
votes

Vous pouvez utiliser un problème commun array_map () code> astuce pour "aplatir" la matrice multidimensionnelle, puis implorez () code> le résultat "aplati", mais en interne PHP touche toujours votre Array Lorsque vous appelez array_map () code>.

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

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


4 commentaires

Ouais, mais PHP fait-il beaucoup plus vite. Merci.


Cela serait de préférence à utiliser array_pop (). Si votre tableau 2ND TIER reçoit des clés supplémentaires, il n'est pas garanti que la touche "Nom" sera la première dans la pile. Programmation défensive FTW.


Sur une autre note, si vous êtes sceptique quant à la création d'une nouvelle fonction dans l'espace de noms, utilisez des fermetures ou Create_Function. echo implore (',', array_map (Create_function ('$ a', 'renvoyer $ A ["nom"];'), $ tury));


Vous avez un très bon point concernant votre deuxième commentaire, mais dans cette affaire Simple Solution fera très bien. Et oui, je suis un peu sceptique quant à la création de fonctions pour ce type d'utilisation. Vous voyez, je suis au milieu d'apprendre OOP, donc je suis un peu confus sur quand et où utiliser des fonctions "normales". Votre dernier commentaire a résolu que cependant. J'aimerais pouvoir accepter deux messages.



26
votes

moyen le plus simple, lorsque vous n'avez qu'un seul élément dans les tableaux intérieurs:

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


2 commentaires

Je reçois Array_pop () s'attend à ce que le paramètre 1 soit un tableau, une chaîne donnée


@Dhanuk je ne vois pas le code, mais je suppose que vous devinez que vous disposiez d'une matrice avec des articles et non d'une gamme de tableaux avec des articles.



22
votes

dans PHP 5> = 5.5.0

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


0 commentaires