- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当与 SplFixedArray 一起使用时,我发现 count( $arr, COUNT_RECURSIVE ) 有一些奇怪的行为.以这段代码为例...
$structure = new SplFixedArray( 10 );
for( $r = 0; $r < 10; $r++ )
{
$structure[ $r ] = new SplFixedArray( 10 );
for( $c = 0; $c < 10; $c++ )
{
$structure[ $r ][ $c ] = true;
}
}
echo count( $structure, COUNT_RECURSIVE );
结果...
> 10
您会期望结果为 110。这是正常行为是因为我嵌套了 SplFixedArray 对象吗?
最佳答案
SplFixedArray
实现了 Countable
,但是 Countable
不允许参数,因此您不能递归计数。 The argument is ignored.您可以从 SplFixedArray::count
的方法签名中看到这一点和 Countable::count
.
在 https://bugs.php.net/bug.php?id=58102 上有一个为此打开的功能请求
您可以继承 SplFixedArray
并使其实现 RecursiveIterator
,然后重载 count
方法以使用 iterate_count
但是然后它将始终计算所有元素,例如它总是 COUNT_RECURSIVE
然后。不过也可以添加专用方法。
class MySplFixedArray extends SplFixedArray implements RecursiveIterator
{
public function count()
{
return iterator_count(
new RecursiveIteratorIterator(
$this,
RecursiveIteratorIterator::SELF_FIRST
)
);
}
public function getChildren()
{
return $this->current();
}
public function hasChildren()
{
return $this->current() instanceof MySplFixedArray;
}
}
关于PHP COUNT_RECURSIVE 和 SplFixedArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284818/
我有一个这样声明的命名空间: namespace MySpace { $array = new SPLFixedArray(); } 我得到的错误是: fatal error :在第 25 行
我正在测试 SplFixedArray 构建一个包含星期几的数组,我得到以下结果:
我在 array() 和 SplFixedArray() 之间做了一些基准测试,我遇到了奇怪的行为。先看我的简单测试(其实就是网上的剪辑版,不好意思,我现在找不到原始出处了): function fo
有没有办法在 SplFixedArray 类的实例中对整数或字符串进行排序?转换为 PHP 的 array、排序,然后再转换回是唯一的选择吗? 最佳答案 首先,恭喜您找到并使用了 SplFixedAr
当与 SplFixedArray 一起使用时,我发现 count( $arr, COUNT_RECURSIVE ) 有一些奇怪的行为.以这段代码为例... $structure = new SplFi
我不太熟悉我们称为 PHP 的实体背后的源代码,所以我不知道一般的 SPL 库,特别是 SplFixedArray 是否是用 C/C++ 实现的。有没有人知道相关信息? 最佳答案 在这里你会找到“sp
不能洗牌 splfixedarray 为什么会这样?有什么可能为什么要洗牌 splfixedarray 最佳答案 因为shuffle需要一个数组作为参数。 shuffle() expects p
为什么如下 $a = new SplFixedArray(5); $a[0] = array(1, 2, 3); $a[0][0] = 12345; // here var_dump($a); 生产
我正在试验 SplFixedArray。我用动态数组完成了一些工作,我试图将其转换为内存效率更高的固定数组(有限的 RAM 可以使用)。 阅读一些 PHP 文档,在标题中找到该函数并继续仅应用于如下数
我是一名优秀的程序员,十分优秀!