8

私は最近よく次のことを見ました、そして私はそれが何をするのか疑問に思いますか?PHPのマニュアルでそれを見つけることができないようです。

 $arr1 = array('key' => 'value1');
 $arr2 = array('key' => 'value2');
 $arr1 += $arr2;

array_mergeに似ていますか?

私は次のことを知っていますが、配列を操作するときに何をするのかわかりません。

 $var1 = 1;
 $var2 = 2;
 $var1 += $var2;
 echo $var1; // 3
4

4 に答える 4

14

$arr1 += $arr2の略です$arr1 = $arr1 + $arr2

+配列演算子は次のことを行います。

  • 次の条件を除いて、$arr1とのすべての要素を含む新しい配列を作成します。$arr2
  • 両方のオペランドに同じキーを持つ要素がある場合、の要素のみ$arr1が存在します。
  • の要素は、の要素の$arr2後になります$arr1

これは、とは異なりarray_mergeます。

  • 次の条件を除いて、$arr1とのすべての要素を含む新しい配列を作成します。$arr2
  • 両方のオペランドに同じ文字列キーを持つ要素がある場合、の要素のみ$arr2が存在します。
  • 数値キーを持つ要素は、0から番号が付け直され、の要素から始まり、の要素に$arr1移動し$arr2ます。
  • の要素は、の要素の$arr2後になります$arr1。ただし、文字列要素は、それらが表示される最初の配列の位置にあります。

例:

<?php
$arr1 = array(1 => 'value1.1', 10 => 'value1.2', 's' => 'value1.s');
$arr2 = array(1 => 'value2', 2=> 'value2.2', 's' => 'value2.s');
var_dump(array_merge($arr1,$arr2));
$arr1 += $arr2;
var_dump($arr1);

結果(わかりやすくするために編集):

array(5){
  [0] => string(8) "value1.1"
  [1] => string(8) "value1.2"
  ["s"] => string(8) "value2.s"
  [2] => string(6) "value2"
  [3] => string(8) "value2.2"
}
array(4){
  [1] => string(8) "value1.1"
  [10] => string(8) "value1.2"
  ["s"] => string(8) "value1.s"
  [2] => string(8) "value2.2"
}
于 2010-08-23T03:45:58.580 に答える
3

PHPの+演算子を配列に適用すると、配列UNIONの役割を果たします。

$arr += array $arr1;

$arrとの和集合を効果的に見つけて$arr1、結果をに割り当て$arrます。

于 2010-08-23T03:27:53.480 に答える
2

2つの配列間の+操作は、UNIONのように機能します。

于 2010-08-23T03:30:33.853 に答える
2

array_merge()、と2つの配列の合計の違いの1つは、次のスニペットで明らかです。(https://3v4l.org/TcNBFも参照してください。)

$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);

のインデックスは$result0になります。

$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;

インデックスは変更されません。インデックスはまだ1です。

于 2010-08-23T03:34:26.857 に答える