2016-12-20 54 views
0

我有一些x,y坐标,其正尝试通过轴优先排序数据,我试图排序使用array_multisort(数据)函数然而,我注意到它仅定位一列PHP 2D阵列通过柱优先级排序

XY样本数据阵列

$xy_dat_ray = array(
    array('x' => 111.0, 'y' => 17.83), 
    array('x' => 25.83, 'y' => 10.37), 
    array('x' => 37.85,'y' => 13.57), 
    array('x' => 17.13, 'y' => 41.33), 
    array('x' => 13.64, 'y' => 16.35), 
    array('x' => 99.16, 'y' => 34.74), 
    array('x' => 12.495, 'y' => 66.855) 
); 

如果我使用在array_multisort像

array_multisort(array_column($xydata, 'x'),array_column($xydata, 'y'), $xydata); 
print_r(array_shift($xydata)); 

正在逐渐

[x] => 13.495 
[y] => 66.855 

但是我想成为严格其中y列,例如最小Y值(10.37,13.57,16.35,17.83),所以我想,我得到

'×'=> 13.64, 'Y'=> 16.35

因为在Y的情况下= 10.37 x为25,其不是最小有x的低的值,在Y的情况下= 13.57 x为37.85,其是高的,但是在16.35 x的情况是13.64,这是可以的,因为像(10.37,13.57)这样的最小Y值具有很大的x值 所以任何想法如何在PHP中解决这个问题

代码示例:: CODE DEMO

回答

0

确定的解决方案是简单的:)

只是总结x和y的值,并将它们加载到另一个阵列让说$ sum_ray;

然后找到通过索引和阵列最小值像

$min_val_index = array_keys($sum_ray, min($sum_ray)); 

那么你得到了分钟x和最小Y点的精确对......就像

print_r($xy_dat_ray($min_val_index[0]));