问题标签 [spl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2223 浏览

php - DirectoryIterator 扫描以排除“。” 和“..”目录仍然包括它们?

在下面的脚本中,我试图将 $base 目录中存在的文件夹复制到 $target 目录。然而,在我最初的回声测试中,它返回了 . 和 .. 目录,即使我试图在条件中处理该异常。

我错过了什么?

但是,如果我将条件更改为...,这对我来说毫无意义

它返回 $base 中的正确文件夹。什么?

0 投票
2 回答
17035 浏览

php - copy() 函数的第一个参数不能是目录?

更新:在 Pascal 的建议答案中,这是我修改后的代码。这行得通。

0 投票
3 回答
200 浏览

php - PHP 预定义接口和 SPL - 版本检查是否足够?

这也许是一个显而易见的问题,但我想确定一下。

我正在尝试找出“预定义接口”出现在 PHP 中的哪个版本。我的假设是 5.0.0,因为这是根据文档添加 SPL 接口的时候。

此外,这些是否可以通过配置或重新编译来禁用,或者可以安全地假设版本检查满足它们的存在?为什么它们甚至与 SPL 分开,区别只是这些不能被关闭,而 SPL 可以吗?(至少在 5.3.0 之前)

0 投票
1 回答
465 浏览

php - 在 php 5.2 中使用 splheap

有没有办法在 php 5.2 中使用 splheap?IE。我可以将课程粘贴到某个地方吗?具体来说,我想用它对迭代器中的项目进行排序,我正在寻找迭代器上的 usort() 等价物。

0 投票
4 回答
419 浏览

php - 代码处理时间过长并且内存占用很大

这段代码在 0.8 秒内执行,占用了我机器上 22Mb 的内存。

可以做些什么来加速它,但更重要的是降低它在任何给定时间消耗的内存占用。

0 投票
1 回答
462 浏览

php - PHP5:SplObjectStorage 垃圾回收

我正在使用SplObjectStorage来保存有关托管对象的信息。当我的对象被破坏时,我希望SplObjectStorage自动清理不再有外部引用的对象。

我现在只能看到两个选项:

  • 让托管对象的析构函数通知存储删除对它的引用;这是不可接受的,因为这些对象不应该知道管理器;
  • 解析debug_zval_dump()以获取引用计数;也不可接受,恕我直言,对于严肃的应用程序来说太“hacky”了。

还有其他想法吗?

0 投票
8 回答
3517 浏览

php - PHP 惰性数组映射

有没有办法做 array_map 但作为迭代器?

例如:

这样做的原因是 $function 很难计算并且 $array 元素太多,只需要映射直到找到特定值。array_map 将计算所有值,然后才能搜索我想要的值。

我可以自己实现迭代器,但我想知道是否有这样做的本机方式。我找不到任何搜索 PHP 文档的内容。

0 投票
2 回答
1118 浏览

php - 对象 LimitIterator - OutOfBoundsException

foreach如果对象 LimitIterator 为空,如何编写不运行以下条件的条件?

上面的代码返回这个错误,

foreach如果对象 LimitIterator 为空,我只是不想运行。

编辑:

为什么$limiter->valid();总是返回false?我有下面的代码在我网站的一个页面上运行,

0 投票
1 回答
9046 浏览

php - 是否可以在 php 5.2.6 中使用 SplEnum?

我尝试使用类:

我有 :

致命错误:找不到类“SplEnum”

我在 PHP 5.2.6 上工作。SplEnum 适用于 php > 5.3 吗?我在文档中没有看到...

0 投票
5 回答
4849 浏览

php - PHP如何在arrayObject上进行array_unshift

如标题所述,您如何array_unshift()在 a 上执行 an arrayObjectarray_push()是通过执行 an 获得的,arrayObject->append()但是 unshift 呢?

编辑:我忘记提及的是,在这种特殊情况下,我还需要保留现有密钥。