php的一些小技巧

本文分享了五个实用的PHP编程技巧,包括str_replace的高效用法、数组处理的最佳实践、类型转换的简便方法、lambda函数的应用以及使用array_chunk简化表格生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1. str_replace

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

比如这个例子:

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

 

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

PHP:
  1. $str= '某人的栖息地 --- www.ooso.net';
  2. $str= str_replace ( array ( '某人', '的', '栖息地', 'www.ooso.net' ), array ( '坏人', 'di', '猪窝窝', 'ooso.net' ), $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' );
  1. $arr= (object ) $arr;
  2.  
  3. echo $arr-> name;
  4. echo $arr-> sex;

 

是不是很省事?

4. lambda函数

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

  1. <?php
  2. $av= array ( "the ", "a ", "that ", "this " );
  3. array_walk ( $av, create_function ( '&$v,$k', '$v = $v . "mango";' ) );
  4. print_r ( $av );
  5. ?>

至少省了一个for循环

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

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

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

<?php
  1. $arr= range ( 1, 24 ); //这个会生成一个数组array(1,2,3,4....24)
  2. $arr= array_chunk ( $arr, 6 );
  3.  
  4. // output table
  5. ?>
  6.  
  7. <table>
  8. <?php foreach ( $arr as $row ): ?>
  9. <tr>
  10.   <?php foreach ( $row as $col ): ?>
  11.   <td><?php echo $col?></td>
  12.   <?phpendforeach;?>
  13. </tr>
  14. <?phpendforeach;?>
  15. </table>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值