注目の書籍

好評発売中!

IT業界徹底研究就職ガイド2013年版

IT/ネット業界で働くと いうことを分かりやす く解説。2013年3月卒 業の学生向けの1冊。

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

オープンソース/Linux

PHP TIPS

ITpro

59. 配列の + (プラス) 演算子

2007/10/25

配列を2つ結合するのに一番よく使用される関数は、おそらく array_merge ではないでしょうか。ただし、array_merge 関数を使用すると数字キーの番号がふり直されてしまうので、キーが数字形式の連想配列を扱う場合に少々やっかいです。

array_mergeのマニュアルに記載されているように、「配列を完全に維持し、単に追加だけしたい場合には、+ 演算子を使用してください」とあるように+ 演算子を使用すると、数字でも文字列でも配列のキーを完全に保持することができます。

では、PHPマニュアルの配列演算子についてのページを見てみましょう。「$a + $b」というようなプラス演算子について、以下のような説明が見つかるでしょう。

-----
+ 演算子は左側の配列に右側の配列の内容を追加します。
  重複しているキーは上書き「されません」。
-----

とあります。重複しているキーは上書きされないので、普通の四則演算のように+ 演算子の左と右の変数を交換すると答えが変わってしまいます。

<?php
$a 
= array("a" => "apple""b" => "banana");
$b = array("a" => "pear""b" => "strawberry""c" => "cherry");

// $c = $a + $b と等価
$c $a;
foreach (
$b as $key => $val) {
  if (!isset(
$a[$key])) {
    
$c[$key] = $val;
  }
}
print_r($c);

// $d = $b + $a と等価
$d $a;
foreach (
$b as $key => $val) {
  
$d[$key] = $val;
}
print_r($d);
?>

上からも $a+$b≠$b+$a ということがわかるでしょう。2つの処理のうち、$d =$b + $a; と記述すればよい部分を、foreachを使って処理している方もいるのではないでしょうか。

連想配列の結合には + 演算子を、数字キーの配列の結合には array_merge 関数、というのが一般的な使用方法ではないでしょうか。もし配列の + 演算子を知らなかった方はこれを機会に、ぜひ使用して下さい。



(アシアル 森川穣)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介