key($file)<count($file)导致的死循环
<?php header('content-type:text/html;charset=utf-8'); $filename1='PHP.primary.test.php'; $filename2='JAVA.senior.task.learn.java'; $filename3='exercise.docx'; //定义一个能够输出文件名和文件后缀的函数,参数即为题目给定的文件变量 function file_explode($filename){ //将$filename以‘.’为标记分割放入数组$file并打印 $file = explode('.',$filename); echo '文件数组:<pre>'; print_r($file); echo '</pre>'; $str = ''; //循环数组$file,输出不带后缀的文件名 while (key($file)<count($file)-1) { $str .= current($file).'.'; // echo $str; next($file); } echo '文件名称是:',substr($str,0,-1),'<br>'; //输出文件后缀 echo '文件后缀是',end($file),'<hr>'; } //调用以上定义的函数,分别完成$filename1、$filename2和$filename3的文件名和后缀输出 file_explode($filename1); file_explode($filename2); file_explode($filename3); ?>
上面是我写的代码,已经成功完成作业,但是有一点不明白
while循环的条件:key($file)<count($file)-1
为什么要减一,以第一个数组为例PHP.primary.test.php,当前代码循环得到的值是没有后缀.php的,他的key($file)最大是3,count($file)-1的值是3,在我看来是可以相等的,代码是key($file)<count($file),此时循环得到PHP.primary.test.php完整的带后缀的文件名才对,但是他进入死循环了。
我知道当key($file)等于3之后,next($file);会报错,但是他报错不应该进入死循环啊。
我不知道表达的意思清不清楚,麻烦老师解答一下,谢谢!
0
收起
正在回答 回答被采纳积分+1
1回答
PHP小白零基础入门
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星