web-dev-qa-db-fra.com

Comment convertir une variable en tableau

J'ai une variable $ v qui peut être une chaîne unique ou un tableau de chaînes
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 convertir une variable en tableau)

30
tsds

Vous pouvez convertir une variable en tableau en utilisant:

    $var = (array)$arr;
53
cbroughton
$a = (array) $v;

est la réponse.

17
Kelly

Je voudrais écrire votre extrait de code comme ceci (bref et vous le lisez et savez exactement ce qui se passe):

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

Sinon, vous pouvez utiliser settype

settype($a, "array");

Pour expliciter le type de variable. C'est exactement la même chose que ce qui se passe avec une conversion de type en coulisse. (Plus utile pour la conversion de groupe, par exemple dans les boucles.)

3
mario

Si vous cherchez à convertir un objet en un seul tableau, vous pouvez utiliser le code suivant: 

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

Les autres réponses fournies ne fonctionneront pas lors de la tentative de conversion d'un objet, mais simplement en convertissant les champs de cet objet en un tableau associatif (à moins que ce ne soit ce que vous essayez de faire). 

$var = (array)$arr;
1
matwonk

Comme d’autres l’ont dit, attribuer une valeur scalar à un tableau produira un tableau singleton (c’est-à-dire un tableau avec scalar comme seul élément). Cependant, comme d'autres l'ont encore souligné, veillez à ne le faire que si vous savez que la valeur sera un scalaire et non une instance de class.

À partir de les docs PHP :

Pour tous les types integer, float, string, boolean et resource, convertir une valeur en un tableau donne un tableau avec un seul élément d'indice zéro et la valeur du scalaire qui était converti. En d'autres termes, (array)$scalarValue est exactement le même que array($scalarValue).

Si un objet est converti en tableau, le résultat est un tableau dont les éléments sont les propriétés de l'objet. Les clés sont la variable membre noms, à quelques exceptions notables près: les propriétés des entiers sont inaccessible; Les variables privées ont le nom de la classe ajouté au début. Nom de variable; les variables protégées ont un '*' ajouté au début du.. Nom de variable. Ces valeurs ajoutées au début ont des octets nuls de chaque côté.

0
GuyPaddock