我想知道为什么原生 php 函数min($array)
不支持Spl Fixed Arrays
。好的gettype
会说它是一个对象,但它仍然包含数组数据。
数组有很多有用的 php 函数,但为了使用它们,我必须使用额外的方法$fx_array->toArray()
。每当您决定使用固定数组时,您必须考虑.. 我需要使用toArray()
吗?
作为SplFixedArray
implements Iterator
,扩展类本身很容易:
class SplFixedArrayOnSteroids extends SplFixedArray
{
public function min(){
$min = $this[0];
foreach($this as $value)
{
if($value < $min)
$min = $value;
}
return $min;
}
}
好的,我知道它的便携性会降低,但欢迎使用 PHP。
因为SplFixedArray
不是最终的,所以你可以扩展它。
为什么这是个问题?
min()
需要迭代它,虽然它可以,但它可能会触发意外行为。以SplPriorityQueue
类为例,它在迭代时删除项目。有人可以很容易地扩展SplFixedArray
并做类似的事情。