统计排行 社区服务 搜索 帮助
  • 56032阅读
  • 84回复
aaaabbbb 离线

级别: 新手上路

  • UID19436
  • 精华 1
  • 发帖35
  • 金钱279 两
  • 威望55 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间2(时)
  • 注册时间2004-07-12
  • 最后登录2008-01-06
倒序阅读, 只看楼主, 楼主   发表于: 2007-12-21
更多操作

php的五个小技巧

本帖被 魅惑乐趣 设置为精华(2008-01-09)
1. str_replace
str_replace是非常常常常常用的php函数,用于字符串替换,经常看到某些php新人为了替换一批字符串,写了好多行str_replace,实在是惨不忍睹。

比如这个例子:

PHP:
$str = '某人的栖息地 --- www.ooso.net';
$str = str_replace('某人', '坏人', $str);
$str = str_replace('的', 'di', $str);
$str = str_replace('栖息地', '猪窝窝', $str);
$str = str_replace('www.ooso.net', 'ooso.net', $str);
以上,替换了4次字符串,实际只要换个写法,一行就搞定了:

PHP:
$str = '某人的栖息地 --- www.ooso.net';
$str = str_replace(array('某人', '的', '栖息地', 'www.ooso.net'), array('坏人', 'di', '猪窝窝', 'ooso.net'), $str);

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

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

PHP:
echo $arr['some_key'];
这样就没有问题了,如果你要把它放在双引号中连用,也不能省掉引号,可以这样写:

PHP:
echo "这是混在双引号中的字符串{$arr['some_key']}";
3. 类型戏法
类型戏法相当好用,比如有一个表单提交过来的变量,正常情况下它应该是整型的,有时候偷懒省去校验的写法可以是这样的:

PHP:
$intVar = (int)$_POST['post_var'];
再比如数组,有时候写键值要打引号是不是很不爽啊,我们可以把它转换成object,比如:

PHP:
$arr = array('name' => 'volcano', 'sex' => 'male');
$arr = (object)$arr;
echo $arr->name;
echo $arr->sex;
是不是很省事?

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

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:
<?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>
gogoidc 离线

级别: 四星会员

  • UID1489234
  • 精华 0
  • 发帖1471
  • 金钱630 两
  • 威望86 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间108(时)
  • 注册时间2007-12-18
  • 最后登录2008-03-07
只看该作者, 沙发   发表于: 2007-12-23
學習下
慕容暖暖 离线

级别: 荣誉会员


  • UID1489303
  • 精华 1
  • 发帖34818
  • 金钱346 两
  • 威望1921 点
  • PW积分344 点
  • 技术分0 分
  • 团队工龄27 月
  • 群组Wind Helper
  • 在线时间5774(时)
  • 注册时间2007-12-18
  • 最后登录2010-09-09
只看该作者, 板凳   发表于: 2007-12-23
学习了···

级别: 二星会员

  • UID1260499
  • 精华 0
  • 发帖477
  • 金钱161 两
  • 威望7 点
  • PW积分15 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间24(时)
  • 注册时间2007-06-23
  • 最后登录2010-05-20
只看该作者, 3楼  发表于: 2007-12-25
偶来支持一下,加油吧
mamasan 离线

级别: 初来乍到

  • UID549680
  • 精华 0
  • 发帖20
  • 金钱178 两
  • 威望0 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间2(时)
  • 注册时间2005-12-02
  • 最后登录2009-11-08
只看该作者, 4楼  发表于: 2008-01-09
受教了谢谢
im283 离线

级别: 三星会员

  • UID1429247
  • 精华 0
  • 发帖1091
  • 金钱687 两
  • 威望41 点
  • PW积分15 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间81(时)
  • 注册时间2007-11-11
  • 最后登录2010-09-02
只看该作者, 5楼  发表于: 2008-01-12
感谢楼主拿来分享
fanaishuang 离线

级别: 一星会员

  • UID1512811
  • 精华 0
  • 发帖177
  • 金钱239 两
  • 威望6 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 群组因为我们是NB青年!!
  • 在线时间28(时)
  • 注册时间2008-01-06
  • 最后登录2008-01-22
只看该作者, 6楼  发表于: 2008-01-12
学习下,感谢楼主分享!
xiangnia 离线

级别: 新手上路

  • UID55791
  • 精华 0
  • 发帖16
  • 金钱280 两
  • 威望5 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间0(时)
  • 注册时间2004-09-24
  • 最后登录2008-01-12
只看该作者, 7楼  发表于: 2008-01-12
感谢aaaabbbb
cz5422 离线

级别: 一星会员

  • UID1220885
  • 精华 0
  • 发帖198
  • 金钱9 两
  • 威望2 点
  • PW积分15 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间116(时)
  • 注册时间2007-05-22
  • 最后登录2010-08-23
只看该作者, 8楼  发表于: 2008-01-12
学习下
chnkey 离线

级别: 初来乍到

  • UID1520821
  • 精华 0
  • 发帖2
  • 金钱175 两
  • 威望0 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间0(时)
  • 注册时间2008-01-13
  • 最后登录2008-01-13
只看该作者, 9楼  发表于: 2008-01-13
值得学习!
maplelee 离线

级别: 二星会员

  • UID1049755
  • 精华 0
  • 发帖597
  • 金钱711 两
  • 威望29 点
  • PW积分15 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间85(时)
  • 注册时间2007-02-01
  • 最后登录2009-08-03
只看该作者, 10楼  发表于: 2008-01-15
学习学习!
byylt 离线

级别: 初来乍到

  • UID1522049
  • 精华 0
  • 发帖34
  • 金钱173 两
  • 威望-6 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间9(时)
  • 注册时间2008-01-14
  • 最后登录2010-06-26
只看该作者, 11楼  发表于: 2008-01-22
呵呵,看一下
php_wind2008 离线

级别: 新手上路

  • UID1466166
  • 精华 0
  • 发帖89
  • 金钱207 两
  • 威望11 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间4(时)
  • 注册时间2007-12-03
  • 最后登录2009-09-08
只看该作者, 12楼  发表于: 2008-01-24
对,不错,是个好东西····














4399 小游戏 休闲小游戏
spldjljb 离线

级别: 一星会员

  • UID1265080
  • 精华 0
  • 发帖279
  • 金钱274 两
  • 威望7 点
  • PW积分13 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间75(时)
  • 注册时间2007-06-27
  • 最后登录2010-09-01
只看该作者, 13楼  发表于: 2008-02-06
值得学习
200827740 离线

级别: 新手上路

  • UID1061014
  • 精华 0
  • 发帖106
  • 金钱175 两
  • 威望0 点
  • PW积分0 点
  • 技术分0 分
  • 团队工龄0 月
  • 在线时间65(时)
  • 注册时间2007-02-12
  • 最后登录2008-04-05
只看该作者, 14楼  发表于: 2008-02-06
 
描述
快速回复

温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
验证问题:
你将要注册的是什么网站<答:phpwind> 正确答案:phpwind
 回复后跳转到最后一页