首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

昨天在朋友圈发了一个代码找茬题

前言

这几年,也手把手带了不少学生。我发现,学习我的《十天学会PHP》系列之后,大家都能初识语法,虽然不熟练,但属于可持续锻炼的范畴。

最大的问题,对PHP错误几乎没有认识。碰到问题就没头没脑的“暴力破解”。所谓暴力破解,就是一点点修改代码,直到“蒙对”,或者没办法来求助我。

我之前写过几篇文章讲错误的,在《文字版》课程中,大家可以免费阅读。还专门给实验室的同学录制过视频课程。虽有效果,但依然不足。

于是,我昨天上午编写了45个用于测试的源代码。 每个源代码都有报错,需要同学去分析去解决。在我看来,这45题通关了,对PHP错误应该也有了足够的了解。

错误信息,是你唯一的依靠

刚刚入门,看到错误信息又是英文的就头疼。但你不知道的是:错误信息,是程序员最重要的伙伴

我一直说:编程其实不是写代码,而是解决问题。

我一直说:解决问题的方法是通用的,你就把自己当警察在破案就好。

那么,破案最重要的是什么?是线索,也就是信息!错误信息就是程序员解决问题的第一线索

我在朋友圈发的是什么题?

PS:我出题比较随意,毕竟错误也是千变万化,所以其实不用太较真代码细节。

有兴趣的同学可以继续研究。

已经研究过的同学,就直接对答案吧。

.

.

.

标准答案

暴露错误

此行代码与题目无关,防止你的运行环境屏蔽了错误信息。

PS:如果访问源文件时,浏览器一片空白,那多半就是屏蔽了错误。

请勿取巧

有同学给出答案说:注释18-21行,然后添加 即可过关。

其实,你删除所有的代码,改成:success 更简单…

考题是为了锻炼大家,取巧过关,并非我本意。

我想考什么?

除了阅读和解决报错之外,应该还要思考这几个问题。

$i 初始值为什么是 -1?

while($i++

$a 是字符串,为什么当成数组用?

最终:用while循环,逐字输出 success,且无报错信息即可。

这道题的关键

在PHP手册中有这样一句话 所以,下面的语法是成立的:

可以直接把字符串当成数组用。

PS:因为每个字符等同于一个字节,所以这个玩法适用于英文字母、字符,中文不能这样玩

这道题就通顺了

因为字符串可以当成数组用,所以我要的是

正确答案

这个代码与之前题目中变化较大,但这样写,可读性较好。 题目中,刻意降低了代码的可读性。

用while循环,循环7次,$i 的变量从0递增到6。再使用 $i 变量去作为下标访问字符串即可。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214B05DLN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券