75

私はPythonのバックグラウンドから来ており、似ているPythonデータ型(辞書)はキーと値のペアの順序付けられていないセットです。

PHP 連想配列が順不同であるかどうか疑問に思っていますか? 彼らは注文されているようです。

$test = array(
  'test' => 'test',
  'bar' => 'bar',
);

var_dump($test);    

var_dump(array_slice($test, 0, 1));

テストは常にバーの前に来るので、ご覧のようにこの配列をスライスできます。それで、これはPHPバージョン間で常に注文されることが保証されていますか? 順序は、配列を宣言した順序ですか? では、配列に [0] を配置するために内部で「テスト」を指しているものはありますか? http://php.net/manual/en/language.types.array.phpを読みましたが、この問題についてあまり詳しく説明していません。ご回答ありがとうございます。タイ

4

4 に答える 4

71

PHP 連想配列 (および数値配列)は順序付けられksort()ており、PHP は、、、uksort()およびkrsort()

さらに、PHP では、数値キーを順不同にして配列を宣言できます。

$a = array(3 => 'three', 1 => 'one', 2 => 'two');
print_r($a);

Array
(
    [3] => three
    [1] => one
    [2] => two
)
// Sort into numeric order
ksort($a);
print_r($a);
Array
(
    [1] => one
    [2] => two
    [3] => three
)

ドキュメントから:

PHP の配列は、実際には順序付きマップです。マップは、値をキーに関連付けるタイプです。このタイプは、いくつかの異なる用途に最適化されています。配列、リスト (ベクトル)、ハッシュ テーブル (マップの実装)、辞書、コレクション、スタック、キューなどとして扱うことができます。配列値は他の配列にすることができるので、ツリーや多次元配列も可能です。

于 2012-06-06T13:02:07.793 に答える
11

ドキュメントには次のように記載されています。

An array in PHP is actually an ordered map.

そうです、それらは常に注文されています。配列は、ハッシュ テーブルとして実装されます。

于 2012-06-06T13:02:58.370 に答える
2

PHPマニュアルから:

配列は順序付けられています。さまざまなソート機能を使用して順序を変更できます。詳細については、配列関数のセクションを参照してください。

私はそれらが注文されているという事実に依存しており、私が行ったすべてのプロジェクトで一貫して機能しています.

于 2012-06-06T13:03:31.590 に答える