[Mac]容量を減らす
DIコンテナはじめ
freee SDKを Laravel で使ってみる
freee API を使ってみる
Segueを利用しない画面遷移
Xcode11.3 で XVim2 を利用する
Codable で JSONを読み込み
Webpack入門
MacからLaradock PostgreSQLで接続エラー
Mac で Laradock の構築
Dockerで不要なイメージを削除
yarn インストール&プロジェクト作成
Laravel 6.x 構築(Homestead編)
Composer インストール
nvm インストール
npm install が Mac でエラー
HTMLタグでカーソルが同時処理(ミラーリング)されてしまう
DI(依存性注入)
[Ubuntu]Let's Encryptで無料の証明書を利用する
[Apache]Apache2.4のアクセス制限が変更
[Ubuntu]rootのログインとsudo権限追加
タミヤ マイコンロボット工作セットをMacに接続してみた
pgAdimn4 でブラウザで開けなくなる
Java8 を HomebrewとjEnvで構築
Android Studio環境構築 2019
ロケールの再構築
vagrant グループに Apacheを追加
Linux2 Apache2 + PHP7.3 + PostgreSQL10
Anadondaの削除
[Mac]初期設定メモ(CentOS)
[Mac]PostgreSQL起動
FormRequest を利用したバリデーション
try-catch で Exception検知
[Debian]Node.js安定板インストール
Middlewareを利用したルートグループ化
namespaceを利用したルートグループ化
名前付きルートによるリダイレクト
artisanコマンド
IE11以下でclosest() を利用する
Karma と Mochaインストール
コンポーネントを親に登録
[脱jQuery]LoadingOverlay をネイティブで実装
Targetを利用せずに新規ウィンドウを開く(rel,class)
[脱jQuery]ネイティブでDrag&Dropやtableソート
[脱jQuery]$(document).on() をネイティブでコーディング
[Git].gitignore が反映されない
[Git]不要ファイル履歴削除
[GAS]Gmail指定ラベルの不要メール削除
UFJ API(開発用)を利用してみる
RuntimeException No application encryption key has been specified
2019/04/25
icon 配列結合 array_merge() と 演算子の違い
PHPの配列は他の言語と比べて若干癖がある。 インデックスが 型が整数か文字列とか連番でなくてもよいとかゆるいので、ある意味柔軟なデータを生成する事もできる。 (ここら辺は言語思想) PHP配列の結合は「array_merge() 」が一般的かも知れないが、演算子でも計算できる。 ただし、インデックスによって結果が異なるので注意が必要。
  • インデックスが同じ、異なる
  • 値が同じ、異なる
の組み合わせで考察してみる。 事前に結合するサンプルデータを作成しておく(例では10個ずつ)。
    function generateValues($count, $prefix = 'test', $from_index = 1)
    {
        for ($i = $from_index; $i <= $count + $from_index; $i++) $values[$i] = "{$prefix}{$i}";
        return $values;
    }
$values1 = 
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
)
$values2 = 
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
)

$values1 + $values2 の結合(インデックス同じ、値同じ)

$values1 + $values2 を演算子「+」で結合してみる。
//values1 + values2
$values1 = $array_merge->generateValues(10);
$values2 = $array_merge->generateValues(10);
$values = $values1 + $values2;
$values1 + $values2 = 
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
)
インデックスが同じだと結合できない。 またどちらの配列が採用されているかわからないので、値の違う配列を作成して調べる。

$values1 + $values2 の結合(インデックス同じ、値異なる)

//values1 + values2
$values1 = $array_merge->generateValues(10, 'red');
$values2 = $array_merge->generateValues(10, 'blue');
$values = $values1 + $values2;
$values1 = 
array (
  0 => 'red0',
  1 => 'red1',
  2 => 'red2',
  3 => 'red3',
  4 => 'red4',
  5 => 'red5',
  6 => 'red6',
  7 => 'red7',
  8 => 'red8',
  9 => 'red9',
)
$values2 = 
array (
  0 => 'blue0',
  1 => 'blue1',
  2 => 'blue2',
  3 => 'blue3',
  4 => 'blue4',
  5 => 'blue5',
  6 => 'blue6',
  7 => 'blue7',
  8 => 'blue8',
  9 => 'blue9',
)
$values1 + $values2 = 
array (
  0 => 'red0',
  1 => 'red1',
  2 => 'red2',
  3 => 'red3',
  4 => 'red4',
  5 => 'red5',
  6 => 'red6',
  7 => 'red7',
  8 => 'red8',
  9 => 'red9',
)
上書きされずに最初の配列が採用されていることがわかる。

array_merge($values1, $values2)での結合(インデックス同じ、値同じ)

同じ内容の配列を array_merge() するとインデックスが振り直された配列を返す。
$values = array_merge($values1, $values2);
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
  10 => 'test0',
  11 => 'test1',
  12 => 'test2',
  13 => 'test3',
  14 => 'test4',
  15 => 'test5',
  16 => 'test6',
  17 => 'test7',
  18 => 'test8',
  19 => 'test9',
)
今度は、インデックスの異なる配列で試してみる。 配列の作成は以下で作成
    function generateValuesWithIndex($count, $prefix = 'test')
    {
        for ($i = 0; $i < $count; $i++) {
            $values[$this->index++] = "{$prefix}{$i}";
        }
        return $values;
    }
$values1 = 
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
)
$values2 = 
array (
  20 => 'test0',
  21 => 'test1',
  22 => 'test2',
  23 => 'test3',
  24 => 'test4',
  25 => 'test5',
  26 => 'test6',
  27 => 'test7',
  28 => 'test8',
  29 => 'test9',
)

$values1 + $values2 の結合(インデックス異なる、値同じ)

$values = $values1 + $values2;
$values1 + $values2 = 
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
  20 => 'test0',
  21 => 'test1',
  22 => 'test2',
  23 => 'test3',
  24 => 'test4',
  25 => 'test5',
  26 => 'test6',
  27 => 'test7',
  28 => 'test8',
  29 => 'test9',
)
インデックスを保持したまま結合できる。

array_merge($values1, $values2)での結合(インデックス異なる、値同じ)

$values = array_merge($values1, $values2);
array (
  0 => 'test0',
  1 => 'test1',
  2 => 'test2',
  3 => 'test3',
  4 => 'test4',
  5 => 'test5',
  6 => 'test6',
  7 => 'test7',
  8 => 'test8',
  9 => 'test9',
  10 => 'test0',
  11 => 'test1',
  12 => 'test2',
  13 => 'test3',
  14 => 'test4',
  15 => 'test5',
  16 => 'test6',
  17 => 'test7',
  18 => 'test8',
  19 => 'test9',
)
インデックスが振り直されて結合される。