我想知道为什么像min($array)
这样的原生php函数不支持Spl Fixed Arrays
。好的gettype
会说它是一个对象,但它仍然包含数组数据。
有很多有用的PHP函数用于数组,但为了使用它们,我必须使用额外的方法$fx_array->toArray()
。每当你决定使用固定数组时,你必须考虑..我需要使用toArray()
吗?
答案 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
并做类似的事情。