ホームページ >バックエンド開発 >PHPチュートリアル >PHP SPL標準ライブラリ SplFixedArrayの使用例_PHPチュートリアル
この記事では主にPHP SPL標準ライブラリのSplFixedArrayの使用例を紹介します。 SplFixedArrayは主に配列の処理に関する主要な関数であり、固定長であり、通常の配列よりも効率的です。すぐに処理できるので、困っている友達に参考にしてもらえます
SplFixedArray は主に配列関連の関数を処理するために使用されます。通常の PHP 配列とは異なり、キー名に数字を使用した固定長の配列であるため、通常の配列処理よりも高速であることが利点です。
私のローカルのベンチマークテストを見てください:
?
1 2 3 4 5 6 7 8 9 10 |
ini_set('memory_limit','12800M');
for($size = 10000; $size echo PHP_EOL . "テスト サイズ: $size" . for($s = microtime(true), $container = Array(), $i = 0; $i echo "Array(): " . (microtime(true) - $s) .
for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i echo "SplArray(): " . (microtime(true) - $s) . }
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| テストサイズ: 10000
配列(): 0.004000186920166 SplArray(): 0.0019998550415039
テストサイズ: 40000 配列(): 0.017001152038574 SplArray(): 0.0090007781982422
テストサイズ: 160000 配列(): 0.050002098083496 SplArray(): 0.046003103256226
テストサイズ: 640000 配列(): 0.19701099395752 SplArray(): 0.16700983047485
テストサイズ: 2560000 配列(): 0.75704312324524 SplArray(): 0.67303895950317
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
SplFixedArray は Iterator 、 ArrayAccess 、 Countable を実装します { /* メソッド */ public __construct ([ int $size = 0 ] ) public int カウント (void) 公共混流(無効) public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] ) public int getSize (void) 公開 int キー (無効) パブリックボイドネクスト(void) public bool offsetExists (int $index) パブリック混合オフセットGet (int $index) public void offsetSet (int $index,mixed $newval) public void offsetUnset (int $index) パブリックボイド巻き戻し(ボイド) public int setSize (int $size) パブリック配列 toArray (void) パブリックブール有効(無効) パブリックボイド__wakeup (ボイド) }
|
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
$arr = 新しい SplFixedArray(4); $arr[0] = 'php'; $arr[1] = 1; $arr[3] = 'Python';
//トラバース、$arr[2] は null です foreach($arr as $v) { echo $v .PHP_EOL; }
//配列の長さを取得する echo $arr->getSize(); //4
//配列の長さを増やす $arr->setSize(5); $arr[4] = '新しいもの';
//例外をキャッチ 試してください{ エコー $arr[10]; } catch (RuntimeException $e) { echo $e->getMessage(); }
|