mysql — статистическое сравнение с переполнением стека

Я ищу кого-то, чтобы указать мне правильное направление для кодирования некоторых статистических сравнений. В настоящее время я запрашиваю свою базу данных и получаю данные обратно следующим образом:

основной набор данных:

3,4,7,10,5,8,1,3,7

Наборы для сравнения могут быть такими, и могут иметь несколько наборов.

4,5,6,9,10,2,3,4,6

Теперь мне нужно выяснить разницу между этими двумя наборами данных — например, разница между 3-4 равна 1. Затем мне нужно выбрать самую большую разницу, самую согласованную и самую низкую оценку.

Как бы вы занялись кодированием?

0

Решение

Я бы порекомендовал использовать функцию array_walk(), передавая первый массив в качестве первого параметра и второй массив в качестве третьего, необязательного параметра. Это будет выглядеть так:

<?php

$array_1 = array(3,4,7,10,5,8,1,3,7);
$array_2 = array(4,5,6,9,10,2,3,4,6);
// making a copy, because the callback function
// works on the actual value
$array_1_copy = $array_1;

echo '<pre>';
array_walk($array_1_copy, 'difference', $array_2);
echo "\nThe maximum difference is: ". max($array_1_copy);
echo "\nThe minimum difference is: ". min($array_1_copy);
echo '</pre>';

// the callback function, takes the 1st param as reference
function difference(&$value_1, $index_1, $array_2) {
$difference = abs($value_1 - $array_2[$index_1]);
echo "Difference between $value_1 and {$array_2[$index_1]} is $difference\n";
$value_1 = $difference;
}

?>

И вывод для этого кода:

Difference between 3 and 4 is 1
Difference between 4 and 5 is 1
Difference between 7 and 6 is 1
Difference between 10 and 9 is 1
Difference between 5 and 10 is 5
Difference between 8 and 2 is 6
Difference between 1 and 3 is 2
Difference between 3 and 4 is 1
Difference between 7 and 6 is 1

The maximum difference is: 6
The minimum difference is: 1
0

Другие решения

$max_diff = 0;
for ($i = 0; $i < (min(count($array1), count($array2));$i++){
if (($array1[$i]-$array2[$i]) > $max_diff ) $max_diff = $array1[$i]-$array2[$i];
}

echo $max_diff;

Нечто подобное … На самом деле не проверял, но это идея.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector