PHPの配列キー値を繰り返すことはできますか?

PHPz
リリース: 2023-04-19 09:44:57
オリジナル
568 人が閲覧しました

PHP の配列は、一連のデータをまとめて保存し、数値や文字列などのさまざまな種類のキー値を使用してデータにアクセスできるようにする非常に一般的なデータ構造です。 PHP 配列を操作するとき、同じキーを使用して複数の値を保存することは可能ですか?という疑問に遭遇するかもしれません。この記事では、この質問に答え、関連する概念とテクニックをいくつか紹介します。

まず第一に、PHP の配列は連想配列 (連想配列) であり、キー値をあらゆる種類の値にマッピングできることを明確にする必要があります。これは、各キーは 1 つの値のみに対応できることを意味します。同じキーで複数の値を保存しようとすると、新しい値が古い値を上書きします。例:

$fruits = array(
  'apple' => 'red',
  'banana' => 'yellow',
  'apple' => 'green'
);

echo $fruits['apple']; // 输出 green
ログイン後にコピー

上の例では、'apple' => 'green' を $fruits 配列に追加すると、古い 'apple' => 'red' が上書きされます。したがって、 $fruits['apple'] を出力すると、「赤」ではなく「緑」が返されます。

これは、PHP では、同じ文字列キーを使用して新しい要素を追加すると、新しい要素が古い要素を置き換えるためです。これは、PHP が配列のキーをハッシュ テーブルのキーとして扱い、新しい値のハッシュ コードが古い値のハッシュ コードと同じである場合、新しい値が古い値を置き換えるためです。これは、整数キーを使用して要素を繰り返し追加しようとすると、古い値を置き換えるのではなく、新しい要素が配列の末尾に追加されることも意味します。

上記の例で使用されている文字列キーに加えて、PHP は整数、浮動小数点数、ブール値、オブジェクトなどの他のタイプのキーもサポートしています。 PHP はすべてのキーを文字列に変換するため、異なるタイプのキーを持つ要素を追加しようとすると、問題が発生する可能性があります。例:

$fruits = array(
  'apple' => 'red',
  0 => 'hello',
  1.5 => 'world',
  true => 'yes',
  new stdClass() => 'object'
);

print_r($fruits);
ログイン後にコピー

上の例では、整数、浮動小数点数、ブール値、オブジェクトなどのさまざまなタイプのキーを使用して要素を追加しようとしています。ただし、上記のコードを実行すると、すべての要素が配列に追加されますが、キーは文字列に変換されることがわかります。たとえば、整数 0 は文字列 '0' に変換され、浮動小数点 1.5 は文字列 '1.5' に変換され、ブール値 true は文字列 '1' に変換され、オブジェクトは文字列「[オブジェクト]stdClass」。

場合によっては、重複キーを使用して複数の値を保存する必要がある場合があります。この機能を実現するには、PHP の別のデータ構造である多次元配列 (多次元配列) を使用できます。多次元配列では複数の配列をネストでき、各配列に同じタイプのキーを含めることができます。

たとえば、次の例は、多次元配列を使用して複数の色を保存する方法を示しています。

$fruits = array(
  'apple' => array('red', 'green'),
  'banana' => array('yellow')
);

print_r($fruits);
ログイン後にコピー

上の例では、2 つの要素を持つ $fruits 配列を作成しました。果物の色を格納するために使用される配列です。これで、キーを使用して特定の色にアクセスできるようになります。例:

echo $fruits['apple'][0]; // 输出 red
echo $fruits['apple'][1]; // 输出 green
echo $fruits['banana'][0]; // 输出 yellow
ログイン後にコピー

多次元配列を使用する場合、ネストされた配列を使用して複数の値を格納すると、複雑さが増すことに注意する必要があります。コードの理解と保守が難しくなる可能性があります。したがって、他のデータ構造を使用して複数の値を保存できる場合は、可能な限り重複キーの使用を避ける必要があります。

要約すると、PHP の配列は連想配列であり、同じキーを持つ複数の値を格納することはできません。複数の値を保存する必要がある場合は、多次元配列またはその他のデータ構造の使用を検討してください。同時に、異なるタイプのキーを使用する場合は、PHP がキーを文字列に自動的に変換するため、不要なエラーや問題が発生する可能性があることに注意する必要があります。

以上がPHPの配列キー値を繰り返すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート