项目中的2个算法小集锦

王志勇 发表于 2019年02月06日 11:29

在Eonval项目的开发中,字符串的处理和算法,比数据库关联、数据库设计要简单得多,这样的算法在程序项目中多得不计其数,一个项目下来,可能会遇到几百个这样的算法。尽量地使用数组、strpos()函数来代替循环程序,可以大大提升程序的效率。

比如在项目中,设定数值1、2、3分别代表的是语言:en、cn、tc。en为英语,cn为简体中文,tc为繁体中文(Traditional Chinese)。

如果不用if语句,或者不用循环语句,如何快速把1、2、3分别转成en、cn、tc?只要巧用explode()这个函数:
$a1=explode(',',',en,cn,tc');

注:explode()函数对字符串的处理实在太重要,我每天都要用这个函数很多次,能轻松把一个字符串变成数组,平时处理完成后再将数组合并成字符串。

这样,$a1[1]的值为en,$a1[2]的值为cn,,$a1[2]的值为tc。在en,cn,tc的最前面,有个逗号,是因为explode产生的数组,是从0开始,如果没有这个逗号,则$a1[0]的值为en,所以最前面加个逗号,巧妙解决了这个问题。

相反,如何快速把en、cn、tc分别转成1、2、3?

$a=',,en,1,cn,2,tc,3';
$b=strpos($a,",$lang,");
$a1=substr($a,($b+4),1);

其中$lang的值是语言如en,$b的值是找到",$lang,"这个字符串在$a的起始位置,$a1就是将en转成1,或者cn转成2,或者tc转成3。上述程序合并为1行:

$a=',,en,1,cn,2,tc,3';$a1=substr($a,(strpos($a,",$lang,")+4),1);

其中,在en,1,cn,2,tc,3前面有2个逗号,是因为strpos找到的位置,是从0开始,第1个逗号是为了避免这种混淆,第2个逗号,是为了被strpos($a,",$lang,")这个检测识别。

0条评论:

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写