有時會用到不同 condition 去查同一個 table 的情況
merge 多個 results 後又不想要重複的 record
類似下面的樣子
$dbData = [
[
'id' => 1,
'name' => 'Heat',
],
[
'id' => 2,
'name' => 'John',
],
[
'id' => 1,
'name' => 'Heat',
],
[
'id' => 2,
'name' => 'John',
]
];
想去重複變成
$dbData = [
[
'id' => 1,
'name' => 'Heat',
],
[
'id' => 2,
'name' => 'John',
]
];
以前的菜鳥方法
foreach check id 不在新 array 裡後 set value
$uniqueData = array();
foreach ( $dbData as $row )
{
if( ! isset( $uniqueData[ $row['id'] ] ) )
{
$uniqueData[ $row['id'] ] = $row;
}
}
$uniqueData = array_values($uniqueData);
# uniqueData Gotcha !!
解法
function uniqueData( array $dbData, string $uniqueKey = 'id' ) : array
{
return array_values(array_column($dbData, null, $uniqueKey));
}