Array au porc
Ou comment les arrays engraissent nos projets
Array, c'est quoi ?
- Liste
- Conteneur associatif
Array, pour quoi ?
- Liste (map) ordonnée
- Liste (map) non ordonnée
- Collection
- Dictionnaire
- Table d'association (hashtable)
- Conteneur associatif
- Stockage clé-valeur
- Table de symboles
- Ensemble (set)
- Pile (stack / heap)
- Graph
- Arbre binaire
- Queue
- Etc…
Liste
Array
Objet
// Ordonnée :
$a = [100, 200, 300];
// Non ordonnée :
$b = [
100 => 'a',
0 => 'b',
50 => 'c',
];Pas besoin :
Un array est très bien pour ça
Collection
Array
Objet
$a = [
new MyObject('test 1'),
new MyObject('test 2'),
new MyObject('test 3'),
];
class Collection
implements
\IteratorAggregate,
\Countable
{
// ...
}
$collection = new Collection();
$collection->add(new MyObject('test 1'));
$collection->add(new MyObject('test 2'));
$collection->add(new MyObject('test 3'));Avantages:
- Validation manuelle des doublons
- Validation des types
Dictionnaire
Array
Objet
$a = [
'option_1' => 'Valeur 1',
'option_2' => 'Valeur 2',
];
class Dictionary
{
// ...
}
$dictionary = new Dictionary();
$dictionary->set('option_1', 'Value 1');
$dictionary->set('option_2', 'Value 2');
// OU
class Dictionary implements \ArrayAccess, \Serializable
{
// ...
}
$dictionary['option_1'] = 'Value 1';
$dictionary['option_2'] = 'Value 2';
(et hashmap, key-value store, tableau associatif, etc.)
Avantages:
- Validation manuelle des doublons
- Validation des types
- Validation manuelle des valeurs
Graph
Array
Objet
$graph = [
'A' => ['B' => 3, 'D' => 3, 'F' => 6],
'B' => ['A' => 3, 'D' => 1, 'E' => 3],
'C' => ['E' => 2, 'F' => 3],
'D' => ['A' => 3, 'B' => 1, 'E' => 1, 'F' => 2],
'E' => ['B' => 3, 'C' => 2, 'D' => 1, 'F' => 5],
'F' => ['A' => 6, 'C' => 3, 'D' => 2, 'E' => 5],
];😏
Utilisez une lib !

Array optimisé
Array
Objet
$data = [
'Client 1',
'Client 2',
];$data = new \SplFixedArray(size: 2);
var_dump($data[0]); // null
$data[0] = 'Client 1';
$data[1] = 'Client 2';
// PHP Fatal error: Uncaught OutOfBoundsException:
// Index invalid or out of range
$data[2] = 'Out of bounds';
// Manual resize:
$data->setSize(3);
$data[2] = 'New item is now ok!';Avantages : prend moins de place en mémoire
Stack, Heap, Linked List...
Documentation PHP:
Stop talking, start objectifying arrays!
@pierstoval
Alex Rock
Freelance dev, architect, coach & trainer
Merci !

Array au porc
By Alex Rock
Array au porc
-
- 61