PHP a un dictionnaire commandé, comme celui de python ? C'est-à-dire que chaque paire de valeurs de clé a également une ordinale associée à celle-ci. P>
3 Réponses :
C'est ainsi que les matrices de PHP fonctionnent hors de la boîte. Chaque paire de clé / valse a un numéro ordinal, de sorte que l'ordre d'insertion est rappelé. Vous pouvez facilement le tester vous-même: P>
Ah, mais pouvez-vous dire, insérer un élément avant un autre élément sans supprimer / ré-ajouter des éléments en masse i>?
Malheureusement non. Pour faire quelque chose comme si vous devez conserver une matrice indexée numérique, vous pouvez donc utiliser des fonctions telles que array_splice code> pour insérer à des compensations aléatoires. Et si vous devez également pouvoir accéder aux éléments via une clé de dictionnaire, vous aurez probablement besoin d'une sorte de mappage de mappage, caraptive les clés dictées sur leurs valeurs correspondantes dans la matrice indexée.
Le lien fourni non plus a une solution
Si je comprends bien la description dans les documents Python correctement, oui. Les tableaux PHP ne sont en réalité que des cartes commandées: P>
Un tableau en PHP est en réalité une carte ordonnée. Une carte est un type qui associe des valeurs aux clés. Ce type est optimisé pour plusieurs utilisations différentes; Il peut être traité comme une matrice, une liste (vecteur), une table de hachage (une implémentation d'une carte), un dictionnaire, une collection, une pile, une file d'attente et probablement plus. Comme les valeurs de matrice peuvent être d'autres tableaux, les arbres et les matrices multidimensionnelles sont également possibles. P> blockQuote>
Que se passe-t-il lorsque vous insérez une clé qui existe déjà? Il semble laisser la clé en place, mais est-ce garanti? ideone.com/itvmw
Les matrices PHP fonctionnent de cette façon par défaut.
$arr = array('one' => 1, 'two' => 2, 'three' => 3, 'four' => 4);
var_dump($arr); // 1, 2, 3, 4
unset($arr['three']);
var_dump($arr); // 1, 2, 4
$arr['five'] = 5;
var_dump($arr); // 1, 2, 4, 5
Afaik, non mais aimerais savoir