使用PHP的五个小技巧

PHP的一些小技巧,比较基础,总结一下,老鸟换个姿势飘过去就是。

1. str_replace

str_replace是非常常常常常用的php函数,用于字符串替换,经常看到某些php新人为了替换一批字符串,写了好多行str_replace,实在是惨不忍睹。

比如这个例子:

$str = ‘某人的栖息地 --- blog.snsgou.com‘;
$str = str_replace(‘某人‘, ‘坏人‘, $str);
$str = str_replace(‘的‘, ‘di‘, $str);
$str = str_replace(‘栖息地‘, ‘猪窝窝‘, $str);
$str = str_replace(‘blog.snsgou.com‘, ‘snsgou.com‘, $str);

以上,替换了4次字符串,实际只要换个写法,一行就搞定了:

$str = ‘某人的栖息地 --- blog.snsgou.com‘;
$str = str_replace(array(‘某人‘, ‘的‘, ‘栖息地‘, ‘blog.snsgou.com‘), array(‘坏人‘, ‘di‘, ‘猪窝窝‘, ‘snsgou.com‘), $str);

2. array

经常看到有人拿数组这样写:

echo $arr[some_key];

上面这行代码能跑,看上去也没什么大问题,但是如果你把php.ini的error notice打开的话,会收到一大批error。php解析器首先是拿“some_key”当作一个常量来解释的,但如果没有定义some_key这样一 个常量,解析器还是很宽容的把它当作了一个字符串来看待。因此新人同学们最好写完整一点:

echo $arr[‘some_key‘];

这样就没有问题了,如果你要把它放在双引号中连用,也不能省掉引号,可以这样写:

echo "这是混在双引号中的字符串{$arr[‘some_key‘]}";

3. 类型戏法

类型戏法相当好用,比如有一个表单提交过来的变量,正常情况下它应该是整型的,有时候偷懒省去校验的写法可以是这样的:

$intVar = (int)$_POST[‘post_var‘];

再比如数组,有时候写键值要打引号是不是很不爽啊,我们可以把它转换成object,比如:

$arr = array(‘name‘ => ‘volcano‘, ‘sex‘ => ‘male‘);
$arr = (object)$arr;

echo $arr->name;
echo $arr->sex;

是不是很省事?

4. lambda函数

lamda函数和array_*系列函数使用有奇效,拿php手册上的一个例子来说:

<?php
	$av = array("the ", "a ", "that ", "this ");
	array_walk($av, create_function(‘&$v,$k‘, ‘$v = $v . "mango";‘));
	print_r($av);
?>

至少省了一个for循环

5. 嵌套循环显示表格的单元格

嵌套循环显示表格的单元格,这是一个很老的话题哦,往往会要在某个单元格后边加个条件判断什么的,考虑是不是要输出tr抑或是td标签。

俺这里介绍一个办法,利用array_chunk函数能够比较工整的输出html,见下例,这个例子要输出一个4行6列的表格:

<?php
$arr = range(1, 24); //这个会生成一个数组array(1,2,3,4....24)
$arr = array_chunk($arr, 6);

// output table
?>

<table>
	<?php foreach($arr as $row): ?>
	<tr>
		<?php foreach($row as $col):?>
		<td><?php echo $col?></td>
		<?php endforeach;?>
	</tr>
	<?php endforeach;?>
</table>
时间: 2024-10-10 21:27:11

使用PHP的五个小技巧的相关文章

牛腩新闻系统(五)——一些小技巧

 牛腩新闻系统(五)-成长小技巧 在牛腩新闻系统的学习和编码过程中,老师指引了不少的学习技巧,帮我们快速并高 效的学习,让系统运行,这些看似不难,但是很实用,我想不仅仅是在这次牛腩系统, 以后也会有很大的用处的,比如,让代码变得整洁.看起来舒适,之前我就是按空格 键,让代码变得更加的整齐好看,但是这样的时间和精力真的花费很大,现在知道只要 Ctrl+k和Ctrl+D就行了,整页的代码都自动规范化了,变得相当的整齐. 1.设置代码文档成整齐格式: 编辑--设置文档格式Ctrl+k,Ctrl+D 2

优化网络连接速度的五个小技巧

工作中有很多不尽如人意的事情,网络速度慢就是其中之一.不幸的是,网速慢这个问题很多时候不是你能够简单解决的.诸如交换拥塞或网段拥塞(你的网络之外)等情况并不是你能够控制的.不过,这里仍然有几个小技巧,能够帮助你优化网络连接速度. 1 避免 DNS瓶颈 如果你的网络是活动目录环境,那么一定会有一个前置的DNS服务器.最近我看到不少企业都采用性能不怎么样的托管主机虚拟成多个服务器,并将DNS服务装入其中.之所以这样做,是因为很多人都认为DNS服务对系统资源的需求并不大,因此DNS服务器可以用很低的资

五十个小技巧提高PHP执行效率(一)

在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点仍然是PHPer没有对程序进行更好的优化. 第一类.变量类型: 1)主要是使用未定义变量,而直接使用变量,做程序开发结束的时候,程序员都喜欢关闭debug,让一切Notice和Warning都影藏起来,但实质上php即使关闭debug也会记录日志,将所有的Notice和Warning信息全部写入日志

五十个小技巧提高PHP执行效率(二)

更详细具体的总结如下: 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号). 2.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 3.$row['id'] 的速度是$row[id]的7倍. 4.echo 比 print 快,并且使用e

总结五个小技巧定位数据库性能问题

[e良师益友网]数据库的使用会随着业务的和数据的增长变得迟钝,当数据库性能变得越开越糟糕的时候,技术人员往往可以扭转局面,下面为你介绍几个技术人员使用常使用的判别数据库性能问题的方法 1.基础设施纵向升级.投入更多的计算资源是解决问题的通常办法,但这办法实际上并不一定会让性能获得提升.即使扩充了正确的资源池,能被有效利用 的资源数量仍然是有限的.对于承载于物理设备上的数据库而言,添加基础设施具有一定难度,而但虚拟或云托管的数据库则非常容易调配计算资源. 2.横向扩展.一些类似群集化MySQL的数

【转载】PHP 开发者该知道的 5 个 Composer 小技巧

Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单: 1 composer update foo/bar 此外,这个技巧还可以用来解决“警告信息问题”.你一定见过这样的警告信息: 1 Warning: The lock file is not up to date with the

PHP开发者该知道的5个Composer小技巧

Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 composer update foo/bar 此外,这个技巧还可以用来解决“警告信息问题”.你一定见过这样的警告信息: Warning: The lock file is not up to date with the latest changes in composer.json, you may

思科命令配置小技巧五:记事本

对于自己常用的命令 可以事先有记事本配置保存好 比如 en conf t line con 0 logg syn exec-t  0 0 exit host 3548 把上面的命令直接在设备的   > 或者 # 模式下复制进去即可 要注意的是:黏贴命令可以可以包含 enter 键的. 如果选择复制的时候包含了 enter 键盘. 那么黏贴后回立即执行 思科命令配置小技巧五:记事本

五个goland进行go开发的小技巧

五个goland进行go开发的小技巧 本文译自5 Tips To Speed Up Golang Development With IntelliJ Or Goland 确实很实用. 1. 实现interface 比如我想为下面的结构体实现共识interface type MyConensus struct { } 通过右键generate->implement methods->搜索engine 一键生成下面代码: type MyConensus struct { info string }