亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
配列のマージ: フラット化された配列要素を多次元配列の子に追加します。
シーンの説明
解決策: array_walk と array_merge を使用する
コード分??析
出力結(jié)果の分析
要約する
ホームページ バックエンド開(kāi)発 PHPチュートリアル 配列要素を別の配列の子に結(jié)合する

配列要素を別の配列の子に結(jié)合する

Oct 15, 2025 pm 12:36 PM

配列要素を別の配列の子に結(jié)合する

この記事では、1 つのフラット配列の要素を別の多次元配列の各部分配列の末尾にマージする方法について詳しく説明します。このチュートリアルでは、`array_walk` を使用してメイン配列を走査し、`array_merge` と組み合わせて対応する要素をサブ配列に追加することで、効率的で実用的な PHP ソリューションを提供するとともに、數(shù)値キーを扱うときの `array_merge` の動(dòng)作を説明します。

配列のマージ: フラット化された配列要素を多次元配列の子に追加します。

PHP プログラミングでは、異なる構(gòu)造の配列からのデータを統(tǒng)合する必要がある狀況によく遭遇します。このチュートリアルでは、キーに従ってフラット配列の各要素を、別の多次元配列の対応するキーのサブ配列の末尾に追加するという特定のシナリオに焦點(diǎn)を當(dāng)てます。この操作は、関連するデータ コレクションを操作する場(chǎng)合、たとえば追加の関連屬性 (フラット配列の要素) をメイン レコード (多次元配列の子) に追加する場(chǎng)合に便利です。

シーンの説明

2 つの配列があるとします。$a は、いくつかのサブ配列に対応するトップレベルのキーを持つ多次元配列です。 $b はフラット配列で、そのキーは $a の最上位キーと一致し、その値は $a の対応するサブ配列に追加する必要がある要素です。

初期の配列構(gòu)造は次のとおりです。

 $a = [
    1 => [
        1 => 「a」、
        2 => "b"、
        3 => "c"
    ]、
    2 => [
        1 => "d"、
        2 => "e"、
        3 => "f"
    ]、
    3 => [
        1 => "g"、
        2 => "h"、
        3 => 「私」
    】
];

$b = [
    1 => 「1」、
    2 => 「2」、
    3 => 「3」
];

私たちの目標(biāo)は、$a の最上位キーに対応する $b の要素を $a の各サブ配列の末尾に追加することです。たとえば、$b[1] の値「1」を $a[1] 配列に追加する必要があります。

解決策: array_walk と array_merge を使用する

PHP は、配列の各要素を走査し、各要素に対してユーザー定義のコールバック関數(shù)を?qū)g行できる array_walk 関數(shù)を提供します。 array_merge 関數(shù)と組み合わせると、必要な配列の結(jié)合操作を効率的に実裝できます。

この機(jī)能を?qū)g裝するコードは次のとおりです。

  "a", 2 => "b", 3 => "c"])
    // $key は $a の現(xiàn)在のトップレベルのキーです (例: 1)
    // $b_array は use を通じて渡された $b 配列全體です // $b_array 內(nèi)の対応するキーの要素を配列に変換し、それらを $item とマージします // array_merge は數(shù)値キーのインデックスを再作成します $result[$key] = array_merge($item, (array) $b_array[$key]);
}, $b); // $b 配列をユーザー データとしてコールバック関數(shù)に渡します // マージされた結(jié)果を出力します var_dump($result);

?>

コード分??析

  1. $結(jié)果 = []; : 最終的にマージされたデータを保存するために、空の配列 $result を初期化します。これは、array_walk がデフォルトで元の配列を変更せず、各要素に対して操作を?qū)g行するためです。 (&$result) を使用すると、コールバック関數(shù)內(nèi)の $result 配列を変更できます。
  2. array_walk($a, function($item, $key, $b_array) use (&$result) { ... }, $b); :
    • $a は、反復(fù)処理の対象となるメインの配列です。
    • 匿名関數(shù)は、$a の要素ごとに実行されるコールバックです。
      • $item: 現(xiàn)在走査されている $a 配列內(nèi)の部分配列 (例: [1 => "a"、2 => "b"、3 => "c"])。
      • $key: $a 內(nèi)の現(xiàn)在のサブ配列のキー (たとえば、1)。
      • $b_array: これは、array_walk の 3 番目のパラメーター $b を通じて渡されるフラット配列全體です。
    • use (&$result): コールバック関數(shù)が $result 変數(shù)にアクセスして変更できるようにします。
    • $b: array_walk の第 3 パラメータとして、コールバック関數(shù)の第 3 パラメータ $b_array に渡されます。
  3. $result[$key] = array_merge($item, (array) $b_array[$key]); :
    • $b_array[$key] 現(xiàn)在の $a サブ配列キー (たとえば、「1」) に対応する $b 配列內(nèi)の要素を取得します。
    • (配列) $b_array[$key] このスカラー値を配列にキャストします。たとえば、「1」は[0 => 「1」]になります。これはarray_mergeが扱える形式です。
    • array_merge($item, ...) 現(xiàn)在の部分配列 $item を $b 要素の変換された配列とマージします。

出力結(jié)果の分析

上記のコードを?qū)g行すると、var_dump($result) は次の出力を表示します。

配列(3) {
  [1]=>
  配列(4) {
    [0]=>
    文字列(1) "a"
    [1]=>
    文字列(1) "b"
    [2]=>
    文字列(1) "c"
    [3]=>
    文字列(1) "1"
  }
  [2]=>
  配列(4) {
    [0]=>
    文字列(1) "d"
    [1]=>
    文字列(1) "e"
    [2]=>
    文字列(1) "f"
    [3]=>
    文字列(1) "2"
  }
  [3]=>
  配列(4) {
    [0]=>
    文字列(1) "g"
    [1]=>
    文字列(1) "h"
    [2]=>
    文字列(1) "i"
    [3]=>
    文字列(1) "3"
  }
}

注: array_merge による數(shù)値キーの処理

array_merge を使用して配列を數(shù)値キーとマージする場(chǎng)合、それらの數(shù)値キーのインデックスが 0 から再作成されることに注意することが重要です。この例では、元の部分配列 [1 => "a", 2 => "b", 3 => "c"] が [0 => "1"] とマージされた後、結(jié)果は [0 => "a", 1 => "b", 2 => "c", 3 => になります。 「1」]。元の數(shù)値キーを保持し、特定の新しい數(shù)値キー (たとえば、4) を追加することが要件の場(chǎng)合、array_merge の動(dòng)作が期待どおりにならない可能性があるため、直接代入を使用する必要があります: $result[$key][4] = $b_array[$key];。ただし、このチュートリアルで説明するシナリオでは、要素が単に最後に追加されるため、array_merge の動(dòng)作は許容されます。

要約する

array_walk の走査機(jī)能と array_merge のマージ機(jī)能を巧みに組み合わせることで、フラット配列の要素を別の多次元配列の子に追加するという特定のタスクを効率的に実裝できます。最終結(jié)果が期待どおりであることを確認(rèn)するには、數(shù)値キーを処理するときの array_merge の動(dòng)作を理解することが重要です。このモードは、複雑なデータ構(gòu)造を処理および変換する場(chǎng)合に非常に実用的であり、PHP 配列操作における重要なスキルです。

以上が配列要素を別の配列の子に結(jié)合するの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調(diào)査により賢明な意思決定を?qū)g現(xiàn)

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

メールアドレスがPHPで有効かどうかを確認(rèn)する方法は? メールアドレスがPHPで有効かどうかを確認(rèn)する方法は? Sep 21, 2025 am 04:07 AM

usefilter_var()tovalidateemailsyntaxandcheckdnsrr()toverifydomainmxrecords.example:$ email = "user@example.com"; if($ email、filter_validate_email)

PHPでオブジェクトの深いコピーまたはクローンを作成する方法は? PHPでオブジェクトの深いコピーまたはクローンを作成する方法は? Sep 21, 2025 am 12:30 AM

useunserialize(serialize($ obj))fordeepcopying whenalldataisserializable;それ以外の場(chǎng)合は、__clone()tomaniallyduplicatededededededavoidsharedReferenceを?qū)g裝します。

PHPで2つの配列をマージする方法は? PHPで2つの配列をマージする方法は? Sep 21, 2025 am 12:26 AM

usearray_merge()tocombinearrays、urblitingduplicatestringkeysandreindexingnumerickeys; forsimplerconcatenation、inthphp5.6、usethesplatoperator [... $ array1、... $ array2]。

PHPプロジェクトで名前空間を使用する方法は? PHPプロジェクトで名前空間を使用する方法は? Sep 21, 2025 am 01:28 AM

NamesSpacesInphporganizeCodeandPreventnamingConflictsByGroupingClasses、インターフェイス、関數(shù)、およびコンテンダントアンダースピフィクティフィクティフィクティフィクティフィクショナル

PHPを使用してデータベースでレコードを更新する方法は? PHPを使用してデータベースでレコードを更新する方法は? Sep 21, 2025 am 04:47 AM

toupdateadatabaserecordinphp、firstconnectusingpdoormysqli、thenuseprepreadedStatementStoeaseaseesecuresQlupDateQuery.example:$ pdo = newpdo( "mysql:host = localhost; dbname = your_database"、$ username、$ username、$ sibsfar

PHPの魔法の方法とは何ですか? `__call()`および `__get()`の例を提供します。 PHPの魔法の方法とは何ですか? `__call()`および `__get()`の例を提供します。 Sep 20, 2025 am 12:50 AM

the__call()メソッドは、customhandlingbyacceptingthemetodnameandarguments、ashownwhencollingdsslikesayhello()

PHPでファイルのzipアーカイブを作成する方法は? PHPでファイルのzipアーカイブを作成する方法は? Sep 18, 2025 am 12:42 AM

ziparchiveクラスを使用して、zipファイルを作成します。最初にターゲットZIPをインスタンス化して開(kāi)き、AddFileを使用してファイルを追加し、カスタム內(nèi)部パスをサポートし、再帰関數(shù)はディレクトリ全體をパッケージ化でき、最終的にはPHPに書(shū)き込みアクセス許可があることを確認(rèn)するために保存します。

PHPでファイル拡張機(jī)能を取得するにはどうすればよいですか? PHPでファイル拡張機(jī)能を取得するにはどうすればよいですか? Sep 20, 2025 am 05:11 AM

usepathinfo($ filename、pathinfo_extension)togetthefileextension; itreliailailavaliavelyhandlesmultipledotsendedgecases、returningtheextension(例えば、 "pdf")oranemptystringifnoneexists。

See all articles