PHP

PHP 配列 重複した要素とキーを取得

PHP

 

 

https://github.com/yuukanehiro/AlgorithmsDataStructure/blob/main/Search/DuplicatedKeysAndValues.php

たまーに必要になる処理なので関数として残しておく🐱

 

/**
 * 重複した値を返却
 *
 * @param array $array
 * @return array
 */
function searchDuplicatedValue(array $array): array
{
    // 要素の重複チェック
    $unique_array = array_values(array_unique($array));
    if (count($unique_array) !== count($array)) {
        // 重複している値を配列で取得
        // 重複している値を返却 ex. array_count_values($array): ["xxx" => 1,"yyy" => 2,"zzz" => 2]
        // 重複していない値は1なので0となる
        $duplicated_array = array_filter(array_count_values($array), function ($v) {
            return ($v-1 !== 0);
        }); // ["yyy" => 0, "zzz" => 1]
        return array_keys($duplicated_array); // ["yyy", "zzz"]
    }
    return [];
}


/**
 * 重複した値のキーと値を返却
 *
 * @param array $array
 * @return array
 */
function searchDuplicatedKeysAndValues(array $array): array
{
    $duplicated_array = searchDuplicatedValue($array);

    $response = [];
    foreach ($duplicated_array as $duplicated_value) {
        $keys = array_keys($array, $duplicated_value);
        $response[] = [
            'keys' => $keys,
            'value' => $duplicated_value
        ];
    }
    return $response;
}

$array = ['apple', 'apple', 'orange', 'banana', 'banana', 'mikan', 'apple', 'iyokan', 'melon', 'pine', 'pine'];
print_r(searchDuplicatedValue($array));
// Array
// (
//     [0] => apple
//     [1] => banana
//     [2] => pine
// )

print_r(searchDuplicatedKeysAndValues($array));
// Array
// (
//     [0] => Array
//         (
//             [keys] => Array
//                 (
//                     [0] => 0
//                     [1] => 1
//                     [2] => 6
//                 )
//             [value] => apple
//         )
//     [1] => Array
//         (
//             [keys] => Array
//                 (
//                     [0] => 3
//                     [1] => 4
//                 )
//             [value] => banana
//         )
//     [2] => Array
//         (
//             [keys] => Array
//                 (
//                     [0] => 9
//                     [1] => 10
//                 )
//             [value] => pine
//         )
// )

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)