重複の可能性:
PHP連想配列は順序付けられていますか?
異なるキーで連想配列にアイテムを追加した場合、追加の順序は保存されますか?特定の要素の「前の」要素と「次の」要素にアクセスするにはどうすればよいですか?
重複の可能性:
PHP連想配列は順序付けられていますか?
異なるキーで連想配列にアイテムを追加した場合、追加の順序は保存されますか?特定の要素の「前の」要素と「次の」要素にアクセスするにはどうすればよいですか?
はい、php 配列には暗黙的な順序があります。reset
、next
、prev
およびcurrent
- または単にforeach
ループ- を使用して検査します。
はい、順序は保持されます。PHP 配列は、順序付けられたハッシュ マップと考えることができます。
要素は「インデックスの作成時間」によって並べられていると考えることができます。例えば
$a = array();
$a['x'] = 1;
$a['y'] = 1;
var_dump($a); // x, y
$a = array();
$a['x'] = 1;
$a['y'] = 1;
$a['x'] = 2;
var_dump($a); // still x, y even though we changed the value associated with the x index.
$a = array();
$a['x'] = 1;
$a['y'] = 1;
unset($a['x']);
$a['x'] = 1;
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated
要約すると、キーが現在配列に存在しないエントリを追加する場合、エントリの位置はリストの最後になります。既存のキーのエントリを更新している場合、位置は変更されません。
foreachは、上で示した自然な順序を使用して配列をループします。foreach が言語に導入されて以来、めったに使用されませんが、必要に応じて、next () current () prev () reset () および友人を使用することもできます。
また、print_r () とvar_dump () も自然な配列順序を使用して結果を出力します。
Java に精通している場合、LinkedHashMap が最も類似したデータ構造です。