Подскажите пожалуйста как получит количество совпадений при сравнении массивов?
$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;
Спасибо.
Если за основу взять пример ваших данных из предыдущего вопроса
$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.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости