(PHP 5 >= 5.3.0, PHP 7, PHP 8)
La classe SplFixedArray fournit les fonctionnalités principales d'un tableau. La différence majeure entre un objet SplFixedArray et un tableau standard de PHP est que SplFixedArray doit être redimensionné manuellement, et n'utilise que des entier dans cette plage pour les index. L'avantage est qu'il utilise moins de mémoire qu'un tableau standard.
since: '8.4',message: 'this method is obsolete, as serialization hooks are provided by __unserialize() and __serialize()',| Version | Description |
|---|---|
| 8.4.0 | Les accès hors limites dans SplFixedArray lèvent désormais des exceptions de type OutOfBoundsException au lieu de RuntimeException. Comme OutOfBoundsException est une classe fille de RuntimeException, aucun changement de comportement n'apparaît lors de la capture de ces exceptions. |
| 8.2.0 | Les méthodes magiques SplFixedArray::__serialize() et SplFixedArray::__unserialize() ont été ajoutées à SplFixedArray. |
| 8.1.0 | Utiliser une clé non entière sur un SplFixedArray lève désormais une TypeError au lieu d'une RuntimeException. |
| 8.1.0 | La classe SplFixedArray implémente désormais JsonSerializable. |
| 8.0.0 | La classe SplFixedArray implémente désormais IteratorAggregate. Auparavant, Iterator était implémentée. |
Exemple #1 Exemple avec SplFixedArray
<?php
// Initialisation d'un tableau avec une taille fixe
$array = new SplFixedArray(5);
$array[1] = 2;
$array[4] = "foo";
var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)
var_dump($array["4"]); // string(3) "foo"
// Augmentation de la taille à 10
$array->setSize(10);
$array[9] = "asdf";
// Réduction de taille de 2
$array->setSize(2);
// Les deux blocs suivants émettent une RuntimeException : index invalide ou hors de l'intervalle
try {
var_dump($array[-1]);
} catch(RuntimeException $e) {
echo "RuntimeException : ".$e->getMessage()."\n";
}
try {
var_dump($array[5]);
} catch(RuntimeException $e) {
echo "RuntimeException : ".$e->getMessage()."\n";
}
// À partir de PHP 8.1.0, utiliser une clé non entière lève une TypeError.
// Avant PHP 8.1.0, une RuntimeException était levée à la place.
try {
var_dump($array["non-numeric"]);
} catch(TypeError $e) {
echo "TypeError : ".$e->getMessage()."\n";
}
?>L'exemple ci-dessus va afficher :
NULL int(2) string(3) "foo" RuntimeException : Index invalid or out of range RuntimeException : Index invalid or out of range TypeError : Illegal offset type
Note:
Avant PHP 8.1.0, accéder à un SplFixedArray avec une clé non entière levait une RuntimeException au lieu d'une TypeError.