【Laravel】 Laravel 5.7コレクション を一気に勉強(3) − crossJoin,dd,diff,diffAssoc,diffKeys




この記事は最終更新日から2年以上経過しています。

crossJoin()

crossJoinを実行するオリジナルコレクションとcrossJoinのパラメーターのコレクション(配列)の値のすべての組み合わせによる新たなコレクションを生成します。

$collection = collect(['1111', '2222']);
$matrix = $collection->crossJoin(['aaaa', 'bbbb']);
$matrix->dump();
/*
Collection {#412 ▼
  #items: array:4 [▼
    0 => array:2 [▼
      0 => "1111"
      1 => "aaaa"
    ]
    1 => array:2 [▼
      0 => "1111"
      1 => "bbbb"
    ]
    2 => array:2 [▼
      0 => "2222"
      1 => "aaaa"
    ]
    3 => array:2 [▼
      0 => "2222"
      1 => "bbbb"
    ]
  ]
}
*/
$collection = collect(['1111', '2222']);
$matrix = $collection->crossJoin(['aaaa', 'bbbb'], ['yyyy', 'zzzz']);
$matrix->dump();
/*
Collection {#417 ▼
  #items: array:8 [▼
    0 => array:3 [▼
      0 => "1111"
      1 => "aaaa"
      2 => "yyyy"
    ]
    1 => array:3 [▼
      0 => "1111"
      1 => "aaaa"
      2 => "zzzz"
    ]
    2 => array:3 [▼
      0 => "1111"
      1 => "bbbb"
      2 => "yyyy"
    ]
    3 => array:3 [▼
      0 => "1111"
      1 => "bbbb"
      2 => "zzzz"
    ]
    4 => array:3 [▼
      0 => "2222"
      1 => "aaaa"
      2 => "yyyy"
    ]
    5 => array:3 [▼
      0 => "2222"
      1 => "aaaa"
      2 => "zzzz"
    ]
    6 => array:3 [▼
      0 => "2222"
      1 => "bbbb"
      2 => "yyyy"
    ]
    7 => array:3 [▼
      0 => "2222"
      1 => "bbbb"
      2 => "zzzz"
    ]
  ]
}
*/

dd()

コレクションのダンプを表示し、処理を終了します。

$collection = collect(['1111', '2222'])->dd();
/*
Collection {#412 ▼
  #items: array:2 [▼
    0 => "1111"
    1 => "2222"
  ]
}
*/

diff()

diffを実行するオリジナルコレクションと、パラメーターで渡されたコレクションまたは一次元配列の値を比較し、呼び出し元のコレクションに存在しない値を新たなコレクションとして返します。

$collection1 = collect([1, 2, 3, 4, 5]);
$collection2 = collect([1, 3, 5]);
$collection1->diff($collection2)->dump();
/*
Collection {#413 ▼
  #items: array:2 [▼
    1 => 2
    3 => 4
  ]
}
*/
$array1 = [2, 4];
$collection1->diff($array1)->dump();
/*
Collection {#413 ▼
  #items: array:3 [▼
    0 => 1
    2 => 3
    4 => 5
  ]
}
*/

diffAssoc()

メソッドを実行するオリジナルコレクションとパラメーターで渡されたコレクションまたは配列のキー・値を比較し、パラメーターで渡されたコレクション(配列)に存在しないオリジナルコレクションのキー・値を新たなコレクションとして返します。

$collection1 = collect(['name' => 'ichiro', 'no' => '51', 'type' => 'baseball']);
$collection2 = collect(['name' => 'matsui', 'no' => '55', 'type' => 'baseball']);
$collection = $collection1->diffAssoc($collection2);
$collection->dump();
/*
Collection {#412 ▼
  #items: array:2 [▼
    "name" => "ichiro"
    "no" => "51"
  ]
}
*/

diffKeys()

メソッドを実行するオリジナルコレクションとパラメーターで渡されたコレクションまたは配列のキーを比較し、パラメーターで渡されたコレクション(配列)に存在しないキーに関するキー・値を新たなコレクションとして返します。

$collection1 = collect(['name' => 'ichiro', 'no' => '51', 'type' => 'baseball', 'age' => 45]);
$collection2 = collect(['name' => 'matsui', 'no' => '55', 'type' => 'baseball']);
$collection = $collection1->diffKeys($collection2);
$collection->dump();
/*
Collection {#412 ▼
  #items: array:1 [▼
    "age" => 45
  ]
}
*/