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 份
- 解答问题 4928 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星