7

Java と C++ でサイズがわからない場合 - 配列は PHP のように使用されず、代わりに linkedList などが使用されます。

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

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

4

4 に答える 4

3

すべての PHP リクエストはすべての変数を初期化する必要があり、リクエスト後に変数は解放されます。そのため、特殊なデータ構造 (maxheap、linkedlist、queue など) が配列よりも効率的であるという状況はめったにありません。また、配列は初心者にとって理解と使用がはるかに簡単です。

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 の要素が追加され、それが要素として配列 $arr に追加されます。

$arr[][]=5;

PHP では配列はハッシュ テーブルであるため、整数キーだけでなく文字列も使用できます。

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

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

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

于 2010-07-02T14:18:40.903 に答える
2

あなたは私たちに 2 つの非常に異なるものを比較するよう求めていますが、ほぼ唯一の類似点は、両方 (配列と SPL) が PHP で利用可能であることです。

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

また、あなたは SPL とは何かについて混乱しているか、はっきりしていないようです。物のコレクションを反復するために使用されるツールに限定されないことは確かです。ライブラリの特定の部分について質問するつもりだったのですか、それともライブラリで何が利用できるのか不明なだけですか?

于 2010-07-02T19:09:42.163 に答える
1

標準配列を使用してください。ArrayObject よりも高速です。

ArrayObject は、カスタム メソッドで指定した独自の配列を実装する場合にのみ使用してください。

于 2010-07-02T14:10:08.757 に答える