データ構造 - 配列(配列)

WBOY
リリース: 2016-10-18 08:41:39
オリジナル
2136 人が閲覧しました

データ構造 - 配列(配列)
配列は、データを連続的に格納する構造であり、インデックスを作成することでアクセスできます。 これらを PHP 配列と混同しないでください。PHP 配列は、実際には順序付けされたハッシュ テーブルとして実装されます。

SplFixedArray と PHP 配列の主な違い:

SplFixedArray は固定長の標準 (標準配列) であり、インデックスとして範囲内の整数のみを許可します。 利点は、配列の実装を高速化できることです。
PHP 配列は実際には、順序付けされたハッシュ テーブル (データのコレクション) として実装されます。 <?php<br /> <br /> /*<br /> 指定された長さ 5 の新しい固定配列を構築します<br /> */<br /> $array = 新しい SplFixedArray(5);<br /> <br /> /*<br /> 指定したインデックスに値を代入します<br /> */<br /> $array[1] = 2;<br /> $array[4] = "foo";<br /> <br /> /*<br /> データ構造: <br /> オブジェクト(SplFixedArray)#1 (5) {<br /> [0]=><br /> ヌル<br /> [1]=><br /> int(2)<br /> [2]=><br /> ヌル<br /> [3]=><br /> ヌル<br /> [4]=><br /> 文字列(3) "foo"<br /> }<br /> */<br /> var_dump($array);<br /> <br /> /*<br /> 配列の長さは 5 です<br /> */<br /> var_dump($array->count());<br /> <br /> /*<br /> 配列のサイズを 10 に増やします<br /> */<br /> $array->setSize(10);<br /> <br /> /*<br /> 配列の長さが増加しても、元のデータは変わりません<br /> オブジェクト(SplFixedArray)#1 (10) {<br /> [0]=><br /> ヌル<br /> [1]=><br /> int(2)<br /> [2]=><br /> ヌル<br /> [3]=><br /> ヌル<br /> [4]=><br /> 文字列(3) "foo"<br /> [5]=><br /> ヌル<br /> [6]=><br /> ヌル<br /> [7]=><br /> ヌル<br /> [8]=><br /> ヌル<br /> [9]=><br /> ヌル<br /> }<br /> <br /> */<br /> var_dump($array);<br /> <br /> /*<br /> 拡張配列に値を代入します<br /> */<br /> $array[9] = "asdf";<br /> <br /> <br /> /*<br /> 配列をサイズ 2 に縮小します<br /> インデックスの先頭から 2 つの長さを保存します <br /> オブジェクト(SplFixedArray)#1 (2) {<br /> [0]=><br /> ヌル<br /> [1]=><br /> int(2)<br /> }<br /> */<br /> $array->setSize(2);<br /> <br /> <br /> <br /> /*<br /> 次の行は RuntimeException をスローします: インデックスが無効か範囲外です <br /> */<br /> 試してみてください{<br /> $array["ユーザー名"]="ジャック";<br /> } catch(RuntimeException $re) {<br /> /*<br /> RuntimeException: インデックスが無効か範囲外です<br /> インデックスには整数のみを使用できます<br /> */<br /> echo "RuntimeException: ".$re->getMessage()."n"; }<br> <br> 試してみてください{<br> $array[-1]="ジャック";<br> } catch(RuntimeException $re) {<br> /*<br> RuntimeException: インデックスが無効か範囲外です<br> インデックスが無効です<br> */<br> echo "RuntimeException: ".$re->getMessage()."n";<br> }<br> <br> 試してみてください{<br> $array[5]="ジャック";<br> } catch(RuntimeException $re) {<br> /*<br> RuntimeException: インデックスが無効か範囲外です<br> インデックスが配列の長さを超えています<br> */<br> echo "RuntimeException: ".$re->getMessage()."n";<br> }<br> <br> /*<br> 配列サイズを表示する<br> サイズ/数を取得 <br> */<br> echo $array->getSize();<br> ?><br> <br> $data=[1 => 1、0 => 2、3 => 3]; <br> $sfa = SplFixedArray::fromArray($data);<br> <br> /*<br> オブジェクト(SplFixedArray)#1 (4) {<br> [0]=><br> int(2)<br> [1]=><br> int(1)<br> [2]=><br> ヌル<br> [3]=><br> int(3)<br> }<br> */<br> var_dump($sfa);<br> <br> $data=[1 => 1、2 => 2、true => 5];<br>$sfa = SplFixedArray::fromArray($data);<br> <br> /*<br> 1 true は 1 に変換され、インデックス 1 のデータは 3 に変更されます<br> 2 デフォルトでは元のインデックスが保存され、インデックスは0から始まります。データが存在しない場合、デフォルトはNULLです<br> オブジェクト(SplFixedArray)#2 (6) {<br> [0]=><br> ヌル<br> [1]=><br> int(3)<br> [2]=><br> int(2)<br> [3]=><br> ヌル<br> [4]=><br> ヌル<br> [5]=><br> int(5)<br> }<br> */<br> var_dump($sfa);<br> <br> $data=[1 => 1、2 => 2、true => 5];<br> $sfa = SplFixedArray::fromArray($data,false);<br> <br> /*<br> 1 元の配列で使用されている数値インデックスを保存してみます。デフォルトは true です。 2 元の数値インデックスが保存されていない場合は、NULL 以外の配列が返されます<br> <br> オブジェクト(SplFixedArray)#1 (3) {<br> [0]=><br> int(3)<br> [1]=><br> int(2)<br> [2]=><br> int(5)<br> }<br> <br> */<br> var_dump($sfa);<br> <br> <br> $data=[1 => 1、'a' => 2、true => 3]; /*<br> インデックスは整数である必要があります <br> 致命的なエラー: キャッチされない例外「InvalidArgumentException」とメッセージ「配列には正の整数キーのみが含まれている必要があります」<br> */<br> //$sfa = SplFixedArray::fromArray($data);<br> <br> ?><br><br>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート