2

我想知道为什么原生 php 函数min($array)不支持Spl Fixed Arrays。好的gettype会说它是一个对象,但它仍然包含数组数据。

数组有很多有用的 php 函数,但为了使用它们,我必须使用额外的方法$fx_array->toArray()。每当您决定使用固定数组时,您必须考虑.. 我需要使用toArray()吗?

4

2 回答 2

3

作为SplFixedArrayimplements Iterator,扩展类本身很容易:

class SplFixedArrayOnSteroids extends SplFixedArray
{

  public function min(){

    $min = $this[0];

    foreach($this as $value)
    {

      if($value < $min)
        $min = $value;

    }

    return $min;

  }

}

好的,我知道它的便携性会降低,但欢迎使用 PHP。

于 2013-05-14T12:33:01.490 回答
2

因为SplFixedArray不是最终的,所以你可以扩展它。

为什么这是个问题? min()需要迭代它,虽然它可以,但它可能会触发意外行为。以SplPriorityQueue类为例,它在迭代时删除项目。有人可以很容易地扩展SplFixedArray并做类似的事情。

于 2013-05-14T12:33:13.647 回答