48 votes

Comment transformer une variable en tableau

J'ai une variable $v qui peut être soit une chaîne de caractères unique, soit un tableau de chaînes de caractères.
et j'ai un code :

$a = array();
if (is_array($v)) {
    $a = $v;
} else {
    $a[] = $v;
}

Comment cela peut-il être fait de manière plus élégante ? (en d'autres termes, comment transformer une variable en tableau)

90voto

cbroughton Points 1506

Vous pouvez transformer une variable en un tableau en utilisant :

    $var = (array)$arr;

0 votes

Ceci entraîne un comportement inattendu de la part de php. la méthode correcte est array($arr)

34 votes

La réponse est correcte. Le commentaire de @Ulterior ne l'est pas. Exemple : $arr = null ; var_dump((array) $arr, array($arr)) ; Returns : array(0) {} (correct), then array(1) { [0] => NULL } (incorrect) De plus, en ce qui concerne la réponse correcte de cbroughton, de tels castings sont nécessaires lorsque la variable doit être utilisée dans un foreach() : si la variable n'est pas un tableau (ou un itérable), il y aura un avertissement de PHP.

2 votes

FWIW : Je pense qu'il est important de faire du typecasting Si vous avez une variable qui est sujette à une mutation suivie d'une fonction qui prend un tableau par exemple. foreach o implode sinon vous rencontrerez des erreurs et des avertissements indésirables.

21voto

Kelly Points 8780
$a = (array) $v;

est la réponse.

3 votes

C'était tellement court que j'ai dû ajouter des personnages de remplissage :-P

1 votes

Je sais que cette réponse est assez ancienne, mais ne devrait-elle pas être $a = (array) $v; ? Au moins dans le cas de l'OP.

12voto

kapa Points 41886

J'écrirais votre extrait comme ceci (court, vous le lisez et vous savez exactement ce qui se passe) :

$a = is_array($v) ? $v : array($v);

6voto

mario Points 76989

Vous pouvez également utiliser settype :

settype($a, "array");

Pour l'explication du type de variable. C'est exactement la même chose que ce qui se passe avec un typecast dans les coulisses. (Plus utile pour le typage de groupe, par exemple dans les boucles).

1voto

matwonk Points 416

Si vous souhaitez convertir un objet en un tableau à comptage unique, vous pouvez utiliser le code suivant :

$list = array([0] => $obj);

Les autres réponses fournies ne fonctionneront pas si vous essayez de convertir un objet, cela convertira simplement les champs de cet objet en un tableau associatif (sauf si c'est ce que vous essayez de faire).

$var = (array)$arr;

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