2015-02-20 4 views
0

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

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

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

Вы должны взорвать наборы первой. – Daan

+0

Да, если у вас нет массивов, но значения запятой разделяются запятой. – MilanG

Смежные вопросы