热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP拼接字符串...哪个更好呢...

咳...最近写的部分代码是有CodeReview的...但是嘛...我不知道哪种能过...PS:PHP版本是5.4的所以不要纠结[]是什么了...这就是array{代码...}
咳... 最近写的部分代码是有 Code Review 的 ...
但是嘛... 我不知道哪种能过...

PS: PHP 版本是 5.4 的所以不要纠结 [] 是什么了 ... 这就是 array

// 1
$rule = [
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er1&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er2&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er3&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er4&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er5&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
];

// 2
$rule = array_map(function($s) {
	return "pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er{$s}&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1";
}, range(1, 5));

// 3
$rule = [];

for ($i = 1; $i <6; $i++) { 
	$rule[] = "pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er{$i}&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1";
}

回复内容:

咳... 最近写的部分代码是有 Code Review 的 ...
但是嘛... 我不知道哪种能过...

PS: PHP 版本是 5.4 的所以不要纠结 [] 是什么了 ... 这就是 array

// 1
$rule = [
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er1&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er2&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er3&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er4&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
	'pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er5&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1',
];

// 2
$rule = array_map(function($s) {
	return "pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er{$s}&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1";
}, range(1, 5));

// 3
$rule = [];

for ($i = 1; $i <6; $i++) { 
	$rule[] = "pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er{$i}&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1";
}

你个死小兔你也有被人 code review 的时候啊 ...

这三种写法 ... 如果是成品代码 ... 第一种是绝对不可取的 ...

你知道你是复制粘贴然后只修改了一个数字 ... 但 review 的人不知道 ...

就算他知道 ... 他也无法确定你是不是手滑多改动了什么 ...

在无法确定你这五行代码是不是只有一个数字不一样其他都一样的情况下 ...

他需要认真去看或者借助工具来确认这一点 ... 这实际上是在给 reviewer 添不必要的麻烦 ...

如果是 code-generator 或者 pre-processor 生成的代码 ... 无疑第一种是效率最高的 ...

但如果手写这种代码 ... 哪怕只是 yy4p 也绝对是一个愚蠢的行为 ...

再说剩下的 ... 在这样一个简单的需求下 ... 第二种的写法偏向炫技 ... 第三种比较中规中矩 ...

我稍微测了一下 ... 第二种写法比第三种慢 140% ...

换言之 ... 第二种写法的执行效率是第三种写法的 240% ...

数字看起来很可怕 ... 但实际上都是毫秒级的差距 ...

我们姑且不说在重负载高并发的情况下这几毫秒能影响什么 ...

我只说浪费的这几毫秒 ... 从任何角度讲 ... 都完全没有意义 ... 你听到服务器的哭泣了吗 ..?

有个事情我必须要说 ... 并不是说你写成第三种样子就说明你没有能力 ... 你的代码就不好看了 ...

重剑无锋 ... 大巧不工 ...

举重若轻才是一个高手该有的样子 ... 像你这种为了炫技而故意制造麻烦的做法 ... 实在是不可取 ...

当然 ... 这只是说要把代码上线去跑的时候 ... 社区沟通的话其实第二种和第三种区别真的不大 ...

顺带一提 ...

这种类 python 的写法都比你用 array_map 要快哦 ...

方案3

1.代码多,要看到差异部分太难了
2. 2 和 3 一般人都会写3. 2还有一个不好之处就是 range 先建立了一个数组,要不然array_map是更好的。
3. 选择3 我个人原因是因为直观

如果是重复的字符串,明显是 str_repeat() 更好。
如果不重复那么明显是第一种更好,因为在编译期间就已经确定了。
第二种是最慢的 函数式编程这一块在PHP这边还很弱 Python的写法不一定适用(当然我是做过测试的)
第三种属于中规中矩

3是扩展性比较好吧.以后想加入新的变量或者增加循环次数的时候很方便
如果遇到了运行效率问题的话也可以很简单的渲染成第一种方式(写入文件或者echo啥的):

for ($i = 1; $i <6; $i++) { 
    file_put_content("pid=etfscreener&formsubmit=1&etfpage=1&cn=cnUS&cf=&go=&ta=&er=er{$i}&ry=&r1=&r3=&r5=&tac=1&erc=1&ryc=1&r5c=1");
}

推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Python版Protobuf的安装和使用方法,包括版本选择、编译配置、示例代码等内容。通过学习本教程,您将了解如何在Python中使用Protobuf进行数据序列化和反序列化操作,以及相关的注意事项和技巧。 ... [详细]
author-avatar
Demoer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有