1. ホーム
  2. php

PHP の連想配列は順序がありますか?

2023-12-18 20:14:33

質問

私はpythonの出身ですが、pythonのデータ型で似たようなもの(辞書)は 順不同 キーと値のペアのセットです。

PHP の連想配列は順不同なのでしょうか? 順序付けされているように見えますが。

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

var_dump($test);    

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

テストは常にバーの前に来て、私はあなたが見るようにこの配列をスライスすることができます。 では、これは php のバージョンに関係なく常に順番が保証されているのでしょうか? この順序は、私が配列を宣言した順序だけなのでしょうか? つまり、何かが内部的に配列の[0]を配置するために'test'を指しているのでしょうか? 私が読んだのは http://php.net/manual/en/language.types.array.php を読みましたが、この問題にはあまり光が当たっていません。 ご回答をよろしくお願いします。タイ

どのように解決するのですか?

PHP の連想配列 (数値配列と同様) は順序付けされます。 であり、PHP は配列のキーの順序を処理するさまざまな関数を提供しています。 ksort() , 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の配列 は実際には順序付きマップであり . マップはキーに値を関連付ける型です。配列、リスト(ベクトル)、ハッシュテーブル(マップの実装)、辞書、コレクション、スタック、キュー、その他いろいろな用途に最適化された型です。配列の値は他の配列になることができるので、木や多次元配列も可能です。