LoginSignup
1
1

PHPの配列への要素追加

Posted at

array_merge($array1, $array2)

  • 配列と配列をマージする処理
  • 配列の要素が単純に要素が結合するだけ
$array1 = array("val1","val2");
$array2 = array("val3","val4");
$ret = array_merge($array1, $array2);
var_dump($ret);
    array(4) {
      [0]=>
      string(4) "val1"
      [1]=>
      string(4) "val2"
      [2]=>
      string(4) "val3"
      [3]=>
      string(4) "val4"
    }
  • 連想配列でもキーは維持される
    $array1 = array('key1'=>"val1",'key2'=>"val2");
    $array2 = array('key3'=>"val3",'key4'=>"val4");
    $ret = array_merge($array1, $array2);
    var_dump($ret);
    array(4) {
      ["key1"]=>
      string(4) "val1"
      ["key2"]=>
      string(4) "val2"
      ["key3"]=>
      string(4) "val3"
      ["key4"]=>
      string(4) "val4"
    }
  • 両方とも連想配列で同じキーがあるとそのキーは右側の配列の要素の値になる
$array1 = array('key1'=>"val1",'key2'=>"val2");
$array2 = array('key2'=>"val3",'key4'=>"val4");
$ret = array_merge($array1, $array2);
var_dump($ret);
array(3) {
  ["key1"]=>
  string(4) "val1"
  ["key2"]=>
  string(4) "val3"
  ["key4"]=>
  string(4) "val4"
}
  • 連想配列のキーが数字だった場合に数字は0からの値に置き換えられる(キーがなかったものとして扱われる)
$array1 = array("val1","val2");
$array2 = array(2=>"val3",4=>"val4");
$ret = array_merge($array1, $array2);
var_dump($ret);
array(4) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val2"
  [2]=>
  string(4) "val3"
  [3]=>
  string(4) "val4"
}
  • 連想配列のキーが数字だった場合に数字が配列通しで重複していても右側の配列の要素で上書きされることはない
$array1 = array(1=>"val1",2=>"val2");
$array2 = array(3=>"val3",4=>"val4");
$ret = array_merge($array1, $array2);
var_dump($ret);
array(4) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val2"
  [2]=>
  string(4) "val3"
  [3]=>
  string(4) "val4"
}

$array1 += $array2

  • 配列と配列をマージする処理(array1に「array1になくてarray2にしかない要素」のみ追加する事になる)
  • 両方とも通常の配列でも連想配列としてみたときに、同じキー要素は先にあった方の要素になる(左側の配列が優先される)
$array1 = array("val1","val2");
$array2 = array("val3","val4","val5","val6");
$array1 += $array2;
var_dump($array1);

array(4) {
  [0]=>
  string(4) "val1"
  [1]=>
  string(4) "val2"
  [2]=>
  string(4) "val5"
  [3]=>
  string(4) "val6"
}
  • 両方とも連想配列の時はキーは維持され、同じキーがあるとそのキーは左側の配列の要素の値になる(同じキーは値が上書きされない)
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$ret = $a + $b;
var_dump($ret);
array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}
  • 両方とも連想配列で数字のキーの時でも文字列の場合と処理は同じになる(同じキーは上書きされない、数字の変更はされない)
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$ret = array_merge($array1, $array2);
var_dump($ret);
array(6) {
  [0]=>
  string(6) "zero_a"
  [1]=>
  string(5) "two_a"
  [2]=>
  string(7) "three_a"
  [3]=>
  string(5) "one_b"
  [4]=>
  string(7) "three_b"
  [5]=>
  string(6) "four_b"
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1