PHP学习小技巧帮助你快速入门

一些简单的例子是:

$_SESSION['username'] = $username; $username = $_SESSION['username'];

但是这有一个问题。如果你正在相同域中运行多个应用程序,会话变量会发生冲突。2个不同的应用程序在会话变量中可能会设置相同的键名。举个例子,一个相同域的前端门户和后台管理应用程序。 因此,用包装函数使用应用程序特定键:

define('APP_ID' , 'abc_corp_ecommerce');//Function to get a session variablefunction session_get($key){

$k = APP_ID . '.' . $key; if(isset($_SESSION[$k])) { return $_SESSION[$k]; } return false;

}//Function set the session variablefunction session_set($key , $value){ $k = APP_ID . '.' . $key;

$_SESSION[$k] = $value; return true; }

7. 使用array_map快速处理数组

比方说,你要trim一个数组的所有元素。新手会这样做: foreach($arr as $c => $v) {

$arr[$c] = trim($v); }

但它可以使用array_map变得更整洁: $arr = array_map('trim' , $arr);

这适用于trim数组$arr的所有元素。另一个类似的函数是array_walk。 8.强制类型检查

$amount = intval( $_GET['amount'] ); $rate = (int) $_GET['rate']; 这是一种好习惯。

9.使用set_error_handler()将Php错误写入到文件

set_error_handler()可以用来设置自定义的错误处理程序。在文件中编写一些重要的错误用于日志是个好主意。 10.小心处理大型数组

大型的数组或字符串,如果一个变量保存了一些规模非常大的东西,那么要小心处理。常见错误是创建副本,然后耗尽内存,并得到内存溢出的致命错误: $db_records_in_array_format; //This is a big array holding 1000 rows from a table each having 20 columns , every row is atleast 100 bytes , so total 1000 * 20 * 100 = 2MB$cc = $db_records_in_array_format; //2MB moresome_function($cc); //Another 2MB ?

当导入csv文件或导出表到csv文件时,上面这样的代码很常见。

像上面这样做可能经常会由于内存限制而让脚本崩溃。对于小规模的变量它不会出现问题,但当处理大型数组时一定要对此加以避免。 考虑通过引用传递它们,或者将它们存储在一个类变量中: $a = get_large_array(); pass_to_function(&$a);

这样一来,相同的变量(并非其副本)将用于该函数。 class A{ function first()

{ $this->a = get_large_array(); $this->pass_to_function(); } function pass_to_function() { //process $this->a } }

尽快复原它们,这样内存就能被释放,并且脚本的其余部分就能放松。 下面是关于如何通过引用来赋值从而节省内存的一个简单示例。 error_reporting(E_ALL);

$a = array();for($i = 0; $i < 100000 ; $i++)

{

$a[$i] = 'A'.$i;

}echo 'Memory usage in MB : '. memory_get_usage() / 1000000 . ' '; $b = $a;

$b[0] = 'B';echo 'Memory usage in MB after 1st copy : '. memory_get_usage() / 1000000 . ' '; $c = $a;

$c[0] = 'B';echo 'Memory usage in MB after 2st copy : '. memory_get_usage() / 1000000 . ' ';

$d =& $a;

$d[0] = 'B';echo 'Memory usage in MB after 3st copy (reference) : '. memory_get_usage() / 1000000 . ' ';

一个典型php 5.4机器上的输出是:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4