These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は3月28日(木)23時9分。 テレホタイムに突入しました。


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年11月 来月
1
2 3 4 5 6 7 8
09 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年11月26日(水)

PHP 配列の + 演算子が便利な件

配列(array)変数を連結する関数として、 array_merge と array_merge_recursive の2つが有名ですが、 + 演算子も使える事が意外と知られていないような気がするので 自分へのメモを兼ねつつ紹介。

実験コード:

$a = array('goo1' => 'goo1', 'goo2' => array('goo2-1', 'goo2-2'));
$b = array('goo1' => 'foo1', 'goo2' => array('foo2-1', 'foo2-2'));

echo "# array_merge\n";
var_dump(array_merge($a, $b));

echo "# array_merge_recursive\n";
var_dump(array_merge_recursive($a, $b));

echo "# array +\n";
var_dump($a + $b);

先にまとめ:

いずれも、(_recursive でなくても)配列を再帰的に処理しますが、 動きは三者三様です。
  • array_merge_recursive は要素の key がぶつかる場合は、(一段深くなるが)配列として value を列挙する。
  • array_merge と + は key がぶつかると、value は片方残る。array_merge は後勝ち。+ は早いもの勝ち。
参考

実験結果。:

% php  array_test.php
# array_merge
array(2) {
  ["goo1"]=>
  string(4) "foo1"
  ["goo2"]=>
  array(2) {
    [0]=>
    string(6) "foo2-1"
    [1]=>
    string(6) "foo2-2"
  }
}
# array_merge_recursive
array(2) {
  ["goo1"]=>
  array(2) {
    [0]=>
    string(4) "goo1"
    [1]=>
    string(4) "foo1"
  }
  ["goo2"]=>
  array(4) {
    [0]=>
    string(6) "goo2-1"
    [1]=>
    string(6) "goo2-2"
    [2]=>
    string(6) "foo2-1"
    [3]=>
    string(6) "foo2-2"
  }
}
# array +
array(2) {
  ["goo1"]=>
  string(4) "goo1"
  ["goo2"]=>
  array(2) {
    [0]=>
    string(6) "goo2-1"
    [1]=>
    string(6) "goo2-2"
  }
}

感想:

早いもの勝ちで動く + は結構便利。 $a の値を優先的に使う場合、
$z = $a + $b;
のように表現出来ますし。
ただ、変数が配列だと気付かない人もいそうなので、 ソレとわかるような工夫が必要ですね。

続く:


これで、1 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project