php - prev() 和 next() 不返回结果

标签 php javascript arrays

prev()next() 没有返回结果,但 current()end()reset() 的作用如下所示:

http://flamencopeko.net/songs_scans_skip_2.php
http://flamencopeko.net/songs_scans_skip_2.txt

<?php
   echo current($arrFiles);
?>
<br />prev: 
<?php
   echo prev($arrFiles);
?>
<br />next: 
<?php
   echo next($arrFiles);
?>
<br />end: 
<?php
   echo end($arrFiles);
?>
<br />reset: 
<?php
   echo reset($arrFiles);
?>

最终目标是让跳过按钮更改大扫描。有人说必须用JS来完成。我对 PHP 和 JS 都很好,但我完全不知道如何编写所需的函数。

<小时/>

这使得数组:

<?php
$arrFiles = array_diff(scandir("scans", 0), array(".", ".."));
$arrFiles = array_values($arrFiles);
$intCountFiles = count($arrFiles);
?>

最佳答案

在调用current后调用prev,数组中的内部指针将超出范围。除非您调用 resetend,否则它不会返回。

因此,在调用current之后,指针指向index 0,然后调用prev。指针超出范围,并返回 false

然后你调用了next,但是指针超出了范围,它无法移动到next,所以next也返回false

next 的作用类似于 prev,一旦指针超出范围,它将不会再回来,除非你调用 reset结束;

查看zend源代码,它解释说:

    ZEND_API int zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos)
    {
        HashPosition *current = pos ? pos : &ht->pInternalPointer;

        IS_CONSISTENT(ht);

        if (*current) {
            *current = (*current)->pListLast;
            return SUCCESS;
        } else
            return FAILURE;
    }

关于php - prev() 和 next() 不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782621/

相关文章:

php - 如何判断MySQL事务成功

javascript - getCurrentPosition() 在 Firefox 中不起作用

java - 我的程序更改了函数内数组的元素,而无需我显式更改它。这是怎么发生的?

javascript - 解析 Var 并执行计算

javascript - 解码 JavaScript

javascript - 从数组中随机选择但在 for 循环内无法按预期工作

javascript - 如何使用 jQuery .each() 处理空对象?

php - 单列 PDO 上的 OR 运算符

php - 如何从 Phar 文件中访问外部文件?

PHP上传图片到数据库