У меня есть этот массив с несколькими объектами:

$batches = [
    [
        'id' => 2,
        'number' => 'ABC'
    ],
    [
        'id' => 3,
        'number' => 'ABC'
    ],
    [
        'id' => 4,
        'number' => 'DEF'
    ]
];

Теперь мне нужно знать, существуют ли числа, которые существуют более одного раза. В данном случае это ABC.

Я пробовал использовать array_sum и array_column, но, похоже, это работает только с числами:

$test = array_sum( array_column( $batches, 'number' ) );
php
0
Mr. Jo 4 Май 2021 в 23:33

1 ответ

Лучший ответ

Используйте array_count_values() для подсчета повторений. Затем вы можете отфильтровать это только для тех, у которых счетчик больше 1.

$results = array_keys(
    array_filter(array_count_values(array_column($batches, 'number')),
                 static function($count) { return $count > 1; }));
1
Mr. Jo 4 Май 2021 в 20:48