PHP では、配列は多くのシナリオで使用できる非常に重要なデータ構造です。 2 次元配列もその 1 つで、通常はテーブルや行列などのデータを格納するために使用されます。実際の開発では、2 つ以上の 2 次元配列を新しい 2 次元配列にマージする必要がある状況に遭遇することがあります。ただし、PHP 独自の array_merge
関数を直接使用してマージすると、マージされたキーの値が変わってしまうという問題が発生します。そこで、キー値を変更せずに 2 次元配列をマージする方法について説明します。
2 次元配列の構造を理解する
PHP では、2 次元配列は実際には複数の 1 次元配列を含む配列です。各 1 次元配列は、複数のキーと値のペアを格納できるサブ配列です。たとえば、次は 2 つのサブ配列を含む 2 次元配列です:
$array = [ [ 'name' => 'John', 'age' => 25, ], [ 'name' => 'Mary', 'age' => 30, ], ];
各サブ配列が個人の情報を表すことがわかります。ここで、name
と age
がキーで、対応する値はその人の名前と年齢です。実際の開発では、この構造のデータに対して、配列のソート、フィルタリング、マージなど多くの操作を実行する必要があります。
array_merge 関数を使用して 2 次元配列を結合する
PHP では配列を結合する方法が多数ありますが、その中で array_merge
関数を使用するのが一般的な方法です。この関数は複数の配列を新しい配列にマージでき、マージされたキー値は自動的に並べ替えられます。以下は、array_merge
関数を使用して 2 つの 2 次元配列をマージする例です。
$array1 = [ [ 'name' => 'John', 'age' => 25, ], ]; $array2 = [ [ 'name' => 'Mary', 'age' => 30, ], ]; $array = array_merge($array1, $array2); var_dump($array);
出力結果は次のとおりです。
array(2) { [0]=> array(2) { ["name"]=> string(4) "John" ["age"]=> int(25) } [1]=> array(2) { ["name"]=> string(4) "Mary" ["age"]=> int(30) } }
マージされたことがわかります。配列は元の配列に従います。 array_merge
関数はすべての配列のキー値を新しい配列のキーとして使用するため、順序が並べ替えられ、キー値が再割り当てされます。新しいキーは元の配列の値です。元の配列に重複したキー値がある場合、後続の配列は前の配列の値を上書きします。元の配列のキー値には重要な情報が含まれている可能性があり、並べ替えや上書きによってデータ エラーが発生する可能性があるため、この動作は多くのシナリオで望ましくありません。では、元の配列のキー値を保存する方法はあるのでしょうか?
array_replace_recursive 関数を使用して 2 次元配列を結合する
array_replace_recursive
関数は、PHP に付属する別の配列結合メソッドであり、array_merge# とは異なります。 ## 関数 はい、並べ替えたり上書きしたりするのではなく、元の配列のキー値を保持します。さらに、
array_replace_recursive 関数は配列の再帰的結合もサポートしており、多次元配列の結合を処理できます。以下は、
array_replace_recursive 関数を使用して 2 つの 2 次元配列をマージする例です。
$array1 = [ [ 'name' => 'John', 'age' => 25, ], ]; $array2 = [ [ 'name' => 'Mary', 'age' => 30, ], ]; $array = array_replace_recursive($array1, $array2); var_dump($array);出力結果は次のとおりです。
array(1) { [0]=> array(2) { ["name"]=> string(4) "Mary" ["age"]=> int(30) } }ご覧のとおり、マージされたarray は、順序を変更したり値を上書きしたりするのではなく、元の配列のキーと順序を保持します。さらに、
array_replace_recursive 関数は多次元配列の結合もサポートしているため、処理がより便利になります。ただし、再帰的に配列を結合する場合、配列の構造が矛盾していると異常な結果が生じる可能性があるため、特に注意が必要です。
array_merge 関数を直接使用してマージすると、配列の順序が変更されたり、キーの値が上書きされたりする可能性があります。元の配列のキー値と順序を維持するには、
array_replace_recursive 関数を使用して配列をマージします。さらに、
array_replace_recursive 関数は配列の再帰的結合もサポートしているため、非常に便利です。ただし、配列を再帰的にマージする場合は、異常な状況を避けるために配列の構造に特別な注意を払う必要があることに注意してください。
以上がキー値を変更せずにPHPで2次元配列をマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 中国語版
中国語版、とても使いやすい

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









