function _ll_closest_centroid($x, $centroids) { $smallest = null; $smallest_distance = PHP_INT_MAX; foreach ($centroids as $index => $centroid) { $distance = __ll_distance_to_centroid($x, $centroid); if ($distance < $smallest_distance) { $smallest = $index; $smallest_distance = $distance; } } return $smallest; }
public function testDistanceToCentroid() { $result = __ll_distance_to_centroid(array(1, 1, 1, 1), array(3, 3, 3, 3)); $this->assertEquals(4, $result); $result = __ll_distance_to_centroid(array(1, 1, 1, 1), array(3, 1, 3, 3)); $this->assertEquals(3.46, round($result, 2)); $result = __ll_distance_to_centroid(array(1, 2), array(2, 1)); $this->assertEquals(sqrt(2), $result); $result = __ll_distance_to_centroid(array(0, 0), array(0, 0)); $this->assertEquals(0, $result); $result = __ll_distance_to_centroid(array(5.3, 5.3), array(5.3, 5.3)); $this->assertEquals(0, $result); $result = __ll_distance_to_centroid(array(1000), array(20)); $this->assertEquals(980, $result); }