用PHP实现内存有效线性插值

用PHP实现内存有效线性插值,php,arrays,Php,Arrays,我有一个1D数组(XYData),例如 我想创建一个内存有效的PHP函数,它对传递的X值进行线性插值,并返回相应的Y值。e、 g 调用函数插值($TE,9.5) 然后它应该返回86 有没有办法避免数组搜索,因为XYData集合可能很长,比如超过100个点 提前谢谢你 不,您无法避免查看阵列。为了提高效率,您必须重新构造数据。通过递归查找中间,然后在该点将其拆分为两部分来完成此操作。对于您的简短示例,您将看到: $TER = array("2 and lower" => array("1"

我有一个1D数组(XYData),例如

我想创建一个内存有效的PHP函数,它对传递的X值进行线性插值,并返回相应的Y值。e、 g

调用
函数插值($TE,9.5)
然后它应该返回86

有没有办法避免数组搜索,因为XYData集合可能很长,比如超过100个点


提前谢谢你

不,您无法避免查看阵列。为了提高效率,您必须重新构造数据。通过递归查找中间,然后在该点将其拆分为两部分来完成此操作。对于您的简短示例,您将看到:

$TER = array("2 and lower"  => array("1" => "20", 
                                     "2" => "30"),
             "5 and higher" => array("5" => "50",
                                     "8" => "100")); 
没有显示递归,对于这样一个小的数据集来说,它真的没有任何意义,但是当数据集变大时,有一个明显的优势。它基本上是一个简单的二叉搜索树


但我怀疑在这种情况下实施它是否有用。我不打算把它全部算出来,你真的应该有10万件或更多的物品来让它有用。如果没有,那么只需处理数组。

对我来说,这看起来不像二维数组,它只是一维的键/值对。。。。鉴于这是一个非线性投影,您需要使用回归来计算中间值。这应该是一个1D数组。谢谢@Hanky웃Panky,这个例子是通过提供Y值来返回X值,我怎样才能反过来呢?让它成为一个内存效率更高的代码?
$TER = array("2 and lower"  => array("1" => "20", 
                                     "2" => "30"),
             "5 and higher" => array("5" => "50",
                                     "8" => "100"));