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);
?>
答案 0 :(得分:4)
调用prev
后调用current
,数组中的内部指针将退出调用范围。除非您致电reset
或end
,否则不会再回来。
因此,在您调用current
后,指针指向index 0
,然后您调用了prev
。指针超出范围,并返回false
。
然后您拨打了next
,但指针超出范围,无法移至下一个,因此next
也会返回false
。
next
的行为与prev
类似,一旦指针超出范围,就不会再回来,除非您拨打reset
或end
;
请参阅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;
}
答案 1 :(得分:0)
请在array_values()方法之后打印$ arrayFiles数组,看看你得到了什么(正确的数组)。这些方法在PHP中正常工作,如下所示
$people = array("Peter", "Joe", "Glenn", "Cleveland");
echo current($people) . "<br />";
echo next($people) . "<br />";
echo prev($people). "<br />";
echo end($people). "<br />";
echo reset($people). "<br />";
// result
Peter
Joe
Peter
Cleveland
Peter