ホームページ  >  記事  >  バックエンド開発  >  PHP の配列モデルについての推測 (misko lee による)

PHP の配列モデルについての推測 (misko lee による)

WBOY
WBOYオリジナル
2016-06-13 13:12:06779ブラウズ

PHP の配列モデルに関するいくつかの推測 (misko lee による)

私の個人的な理解によれば、配列はメモリ内の連続した空間であるべきです。配列を使用する前に、指定されたサイズの空のメモリをメモリ内で開く必要があります。 宣言されたサイズが利用可能な連続メモリ サイズより小さい場合、メモリ オーバーフロー エラーが報告されます。
PHP 配列を使用したことのある子供たちは、PHP の配列に次の要素が含まれていないことをすぐに判断できるはずです。上記の特徴。まず、配列宣言では size を決定する必要がありません。第 2 に、サイズの上限はありません。配列の使用。これら 2 つの点 から、PHP の配列は連続したメモリ空間ではなく、リンク リスト形式の緩やかな構造であると判断できます。
PHP の配列は、インデックス配列と連想配列の 2 つの形式に分類できます。インデックス配列はカウント配列構造です。連想配列は、マップデータ構造、つまり の実装です。 >Key-Value 構造。
次の例を使用して、インデックス配列と連想配列について説明します。
$arr=array(1,2,3,'name'=>'misko_lee','age'=>22); //インデックス付きの連想混合配列を定義します
for($i=0;$i
echo $arr[$i] //ここで添え字のオーバーフローがわかります。エラーメッセージ

Cout($arr)関数呼び出しは、$arr 配列の長さを返します。ただし、for ループはインデックス配列を通常どおり出力することしかできません。したがって、 インデックス配列と連想配列は 2 つの異なる実装であると判断できます。これは、PHP の配列が緩い構造であるという推測も証明します。
インデックス配列については次のような推測があります:
$arr[100]=100;
$arr[]=101; //この時点では$arr[]自動増加添字は 101

上記の実験は、PHP の配列カウンター は配列メモリの最初のアドレスからカウントを開始しません。 🎜>擬似的なカウント方法です。したがって、配列のサイズを決定するためにカウンターを使用することは完全に間違っています。
上記の発言は個人的な戯言であり、非常に信頼性が低いです。先輩方は間違いを指摘していただければ幸いです。善良な人は安全な生活を送っています。 最後にPS
: 配列foreachを使用します。需要がない場合は、配列ポインタを使用してください reset() 関数はトラバーサル リセットを実行します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。