気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHP関数
  2. 207 view

array_merge関数と配列結合演算子「+」による重複キーの扱いの違い

複数の配列を結合して1つにまとめるには、array_merge関数を使う方法と、配列結合演算子「+」を使う方法があります。

主な違いは、同じ名前の文字列インデックスを上書きするかどうかです。array_merge関数では、既存の要素を上書きします。次の例では、重複するインデックス「t」の「東京」が「東京都」に置き換わります。

<?php
$ar1 = array("t"=>"東京", "c"=>"千葉県");
$ar2 = array("t"=>"東京都", "k"=>"神奈川県");
print_r(array_merge($ar1, $ar2));
?>
array_merge関数による配列の結合

array_merge関数による配列の結合

配列結合演算子「+」では、既存要素を上書きしません。重複するインデックス「t」の値は「東京」のままです。

<?php
$ar1 = array("t"=>"東京", "c"=>"千葉県");
$ar2 = array("t"=>"東京都", "k"=>"神奈川県");
print_r($ar1 + $ar2);
?>
配列結合演算子「+」による配列の結合

配列結合演算子「+」による配列の結合

2つの違いを利用して、既存要素を上書きするかどうかを指定できるユーザー定義関数を作成することができます。

<?php
$ar1 = array("t"=>"東京", "c"=>"千葉県");
$ar2 = array("t"=>"東京都", "k"=>"神奈川県");

// 既存要素を上書きする
$ar3 = my_array_merge($ar1, $ar2, true);
print_r($ar3);

// 既存要素を上書きしない
$ar3 = my_array_merge($ar1, $ar2, false);
print_r($ar3);

// 上書き指定が可能な配列結合関数
function my_array_merge($ar1, $ar2, $overwrite = false) {
    if ($overwrite) {
        $temp = array_merge($ar1, $ar2); // 既存要素を上書き
    } else {
        $temp = $ar1 + $ar2; // 既存要素を上書きしない
    }

    return $temp;
}
?>
配列の結合

配列の結合

PHP関数の最近記事

  1. mb_send_mail関数でReturn-Pathを設定する方法

  2. is_numeric関数とis_int関数の違い

  3. PHPのdate関数の使用例

  4. isset関数とempty関数と「!」の違い

  5. 文字列を分割して配列を作成するexplode関数

関連記事

PAGE TOP