Как получить количество совпадений array_key_exists?

160
03 октября 2017, 06:28

Подскажите пожалуйста как получит количество совпадений при сравнении массивов?

$rows = $cost->getRows();
    $orders = $results->getRows();
    $tmp = array_column($rows, 1, 0);
    foreach($orders as &$v){
         if(array_key_exists($v[3], $tmp)){
             $v[] = $tmp[$v[3]];
         }
    }

Нужно что было на выходе так:

$v[] = $tmp[$v[3]] / $key_exists;

Спасибо.

Answer 1

Если за основу взять пример ваших данных из предыдущего вопроса

$orders = [
    ['a1', 'b1', 'c1', 1],
    ['a2', 'b2', 'c2', 2],
    ['a3', 'b3', 'c3', 3],
    ['a4', 'b4', 'c4', 5],
    ['a5', 'b5', 'c5', 5],
];
$rows = [ [1, 1000], [2 , 2000],  [5,5000]];

то в целом, общее число совпадений значений 3-го столбца первого массива $orders и 0-го столбца $rows можно получить как

$count = count(array_intersect(array_column($orders, 3), array_column($rows, 0)));

для данного примера результат будет равен 4.

Где результатом работы функции пересчения массивов array_intersect будет

Array (
    [0] => 1
    [1] => 2
    [3] => 5
    [4] => 5
)

А если требуется посчитать число совпадений для каждого элемента, то используя функцию array_count_values можно получить следующий результат:

Array (
    [1] => 1
    [2] => 1
    [5] => 2
)

Если же потребуется число совпадений без повторов, то

count(array_unique(array_intersect(...)) 

вернет результат 3.

READ ALSO
Ошибка подключения API VK на локальном хосте

Ошибка подключения API VK на локальном хосте

Здравствуйте, возникла проблема при подключении к API VK

190
Бесплатный онлайн чат для сайта

Бесплатный онлайн чат для сайта

Всем привет, подскажите бесплатный онлайн чат для сайтаСайт на symfony2(2

181
Как можно сравнить элементы массива?

Как можно сравнить элементы массива?

ЗдраствуйтеМне нужно добавить в программу сравнение: верно ли , что название пунктов назначения совпадают у двух поездов

195