像min()这样的php本机函数不支持固定数组

时间:2013-05-14 12:25:17

标签: php arrays spl

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

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

2 个答案:

答案 0 :(得分:3)

SplFixedArray实现Iterator时,很容易扩展类本身:

class SplFixedArrayOnSteroids extends SplFixedArray
{

  public function min(){

    $min = $this[0];

    foreach($this as $value)
    {

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

    }

    return $min;

  }

}

好的,我知道它不那么便携,但欢迎使用PHP。

答案 1 :(得分:1)

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

为什么会出现问题? min()需要迭代它,尽管可能,它可能会触发意外行为。以SplPriorityQueue类为例,在迭代时删除项目。有人可以轻松扩展SplFixedArray并做类似的事情。