【php】array_mergeと+演算子
問題
phpのarray_merge関数と+演算子って、配列を結合してくれるけど、ちょっと違いますよね?
答え
以下のような違いがあります。
配列の結合で添字が数字のみの場合、
array_mergeは常にゼロから始まる連続した数値に置き換わるが、
+演算子は維持する。
文字列として定義しても数値扱いになる。
でも0で始まる0でない場合だけは文字扱い。
(”0″ → 0、 “01” → “01”)
+演算子は、数字の添字を残したい時には都合がよさそうだけど、
あとに現れる重複するキーを上書きしない(無視する)。
以下のような結果になります。
$Faiz = array( "555" => "ファイズ", "913" => "カイザ", "333" => "デルタ" ); $ParadiseLost = array( "315" => "サイガ", "000" => "オーガ" ); var_export(array_merge($Faiz, $ParadiseLost)); Output: array ( 0 => 'ファイズ', 1 => 'カイザ', 2 => 'デルタ', 3 => 'サイガ', '000' => 'オーガ', ) var_export($Faiz + $ParadiseLost); Output: array ( 555 => 'ファイズ', 913 => 'カイザ', 333 => 'デルタ', 315 => 'サイガ', '000' => 'オーガ', )
$Faiz = array( 555 => "ファイズ", 913 => "カイザ", 333 => "デルタ", 0 => "ライオトルーパー" ); $ParadiseLost = array( 315 => "サイガ", 0 => "オーガ" ); var_export(array_merge($Faiz, $ParadiseLost)); Output: array ( 0 => 'ファイズ', 1 => 'カイザ', 2 => 'デルタ', 3 => 'ライオトルーパー', 4 => 'サイガ', 5 => 'オーガ', ) var_export($Faiz + $ParadiseLost); Output: array ( 555 => 'ファイズ', 913 => 'カイザ', 333 => 'デルタ', 0 => 'ライオトルーパー', 315 => 'サイガ', )
コメント