## 如何共享session


## php代码解释过程
1. Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
2. Parsing, 将Tokens转换成简单而有意义的表达式
3. Compilation, 将表达式编译成Opocdes
4. Execution, 顺次执行Opcodes，每次一条，从而实现PHP脚本的功能。

## 对象清晰用对象，否则用函数（无状态）。

## PHP的回收机制？

## base64图片上传
```
$tmp = explode('base64,',$pic);
$file = str_replace(array('-', '_'), array('+', '/'), $tmp[1]);
```

## echo(),print(),print_r()的区别?
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print（）只能打印出简单类型变量的值(如int,string)  
print_r（）可以打印出复杂类型变量的值(如数组,对象)   
echo 输出一个或者多个字符串   

## 浮点数注意点
1、浮点数写出来就是错的  
2、一定要运算、比较就用bcmatch库  
http://php.net/manual/zh/ref.bc.php  

## 语句include和require的区别是什么?
include 产生一个 warning ，而 require 直接产生错误中断；
require 在运行前载入；
include 在运行时载入；
require_once 和 include_once 可以避免重复包含同一文件。

## 一些php魔术方法
__construct() 实例化类时自动调用。  
__destruct() 类对象使用结束时自动调用。  
__set() 在给未定义的属性赋值的时候调用。  
__get() 调用未定义的属性时候调用。  
__isset() 使用isset()或empty()函数时候会调用。  
__unset() 使用unset()时候会调用。  
__sleep() 使用serialize序列化时候调用。  
__wakeup() 使用unserialize反序列化的时候调用。  
__call() 调用一个不存在的方法的时候调用。  
__callStatic()调用一个不存在的静态方法是调用。  
__toString() 把对象转换成字符串的时候会调用。比如 echo。  
__invoke() 当尝试把对象当方法调用时调用。  
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。  
__clone() 当使用clone复制一个对象时候调用。  

## php中empty()和isset()的区别
isset 用于检测变量是否被设置，使用 isset() 测试一个被设置成 NULL 的变量，将返回 FALSE 。
empty 如果 var 是非空或非零的值，则 empty() 返回 FALSE。换句话说，""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的，如果 var 为空，则返回 TRUE 。

如果变量为 0 ，则empty()会返回TRUE，isset()会返回TRUE；  
如果变量为空字符串，则empty()会返回TRUE，isset()会返回TRUE；  
如果变量未定义，则empty()会返回TRUE，isset()会返回FLASE。   

## MySQL、PHP按周统计数据跨年问题（oW %x%v）

http://xmyl.me/archives/148.html