SPL vs.アレイ:SPLを使用するのはいつですか?また、PHPでアレイを使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/3166405

  •  02-10-2019
  •  | 
  •  

質問

JavaとC ++では、サイズがわからない場合は、PHPのように使用されていないアレイ、代わりにLinkedListなどを使用しています。

PHPにはSPLが存在しますが、ほとんどの場合、プログラマーはアレイを使用しています(なぜ人々はSPLについて知らないため)?

PHPとWheWheSPLで配列を使用する必要があり、PHPとJava/C ++の間のこの場合の違いは何ですか?

役に立ちましたか?

解決

すべてのPHPリクエストはすべての変数を初期化する必要があり、リクエスト後に解放されます。そのため、特別なデータ構造(MaxHeap、LinkedList、またはキューなど)が配列よりも効率的である状況があまりないことが多いためです。また、アレイは、初心者の理解と使用がはるかに簡単です。

PHPのC ++との違いは、アレイの長さが動的であることです。いつでも要素を追加できます。

$arr=array();
$arr[]=5; //add integer to array
echo count($arr); //1
$arr[]=7;
echo count($arr); //2

別の配列に動的に作成して配列を追加できます

$arr[]=array();
$arr[2][]=5;
echo count($arr); //3
echo count($arr[2]); //1

これにより、新しい配列が作成され、値5の要素が追加され、Array $ arrに要素を追加します。

$arr[][]=5;

PHPアレイにはハッシュテーブルがあるため、整数キーだけでなく文字列も持つことができます。

$arr['somekey']='somevalue';

配列要素が整数の場合、各要素には16バイトを取る値構造(ZVAL)が必要です。また、ハッシュバケットが必要です。これには、36バイトが必要です。これにより、値ごとに52バイトが与えられます。メモリ割り当てヘッダーは、さらに8バイト*2で、68バイトを与えます。

PHPの配列について: http://oreilly.com/catalog/progphp/chapter/ch05.html

他のヒント

あなたは私たちに2つを比較するように頼んでいます 大規模に さまざまなこと、ほとんど唯一の類似点は、PHPで利用可能なそれら(配列とSPL)の両方であることです。

そのためには、タスクを達成するために両方を使用する可能性のある時期に一方を他方よりも使用する必要がある場合、直接比較または処方することは本質的に無意味です。そのメモで、 両方とも 絡み合って使用される場合があります:たとえば、 ArrayIterator 配列または ArrayObject オブジェクトを使用するときに配列スタイルの構文を使用する。

また、SPLが何であるかについて混乱している、または不明確であるように見えます。確かに ではありません 物事のコレクションを反復するために使用されるツールに制限されています。ライブラリの特定の部分について尋ねるつもりでしたか、それともあなたはおそらくそれで何が利用可能かだけではないでしょうか?

標準配列を使用すると、ArrayObjectよりも高速です。

ArrayObjectのみを使用して、カスタムメソッドを使用して独自の指定された配列を実装してください。

Array_Push/POP関数に関連付けられているバニラアレイの代わりに「Splstack」を使用することを決定できるため、混乱は必要ではありません。または、古典的な方法で配列を使用して、

そして、spldoublylinkedlist、splqueue、splheapが存在します。プラスArrayObject。

したがって、質問は有効です。そして答えは次のとおりです。あなたは同じことをよりジャワッシュな方法で行い、それは遅くなります。

一般的に言えば、SPLは、C ++&Javaに存在するように、標準と「既製」クラスとAPIを模倣するための暫定的なものです。

私見は手遅れになりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top