La classe SplFixedArray

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Introduction

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.

Synopsis de la classe

classSplFixedArrayimplementsIteratorAggregate, ArrayAccess, Countable, JsonSerializable {
public__construct(int$size = 0)
publiccount(): int
publiccurrent(): mixed
publicstaticfromArray(array$array, bool$preserveKeys = true): SplFixedArray
publicgetSize(): int
publickey(): int
publicnext(): void
publicoffsetExists(int$index): bool
publicoffsetGet(int$index): mixed
publicoffsetSet(int$index, mixed$value): void
publicoffsetUnset(int$index): void
publicrewind(): void
publicsetSize(int$size): bool
publictoArray(): array
public__unserialize(array$data): void
publicvalid(): bool
public__wakeup(): void
}

Historique

VersionDescription
8.2.0 Les méthodes magiques SplFixedArray::__serialize() et SplFixedArray::__unserialize() ont été ajoutées à SplFixedArray.
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.

Exemples

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 lignes suivantes émettent une RuntimeException : index invalide ou hors de l'intervalle
try {
var_dump($array["non-numeric"]);
} catch(
RuntimeException $re) {
echo
"RuntimeException : ".$re->getMessage()."\n";
}

try {
var_dump($array[-1]);
} catch(
RuntimeException $re) {
echo
"RuntimeException : ".$re->getMessage()."\n";
}

try {
var_dump($array[5]);
} catch(
RuntimeException $re) {
echo
"RuntimeException : ".$re->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 RuntimeException: Index invalid or out of range 

Sommaire

To Top