-
什么是引用变量?在PHP中,用什么符号定义引用变量?
概念:用不同的名字访问同一个变量的内容.
定义方式:& -
写出如下程序的输出结果
$data = ['a', 'b', 'c'];
foreach($data as $key => $val){
$val = &$data[$key];
var_dump($data);
}
答:
1.[‘a’,‘b’,‘c’]
2.[‘b’,‘b’,‘c’]
3.[‘b’,‘c’,‘c’]
- PHP中字符串可以使用哪三种定义方法以及各自的区别是什么?
定义方式:
单引号:不能解析变量,转义字符
双引号:可以解析变量,转义字符,变量可以使用特殊字符和{}包含
heredoc和newdoc
区别:
单引号效率高于双引号
Heredoc 类似于双引号
Newdoc 类似于单引号
两者都用来处理大文本
-
0.1+0.7 == 0.8?
浮点类型不能用于相等的判断 -
布尔的七种情况,if语句中的判断
0
0.0
‘ ’
‘0’
FALSE
NULL
array() -
超全局数组
$GLOBALS 包含下面所有的内容
$_GET
$_POST
$_REWUEST 包含 $_GET, $_POST, $_COOKIE
$_SESSION
$_COOKIE
$_SERVER
$_SERVER[‘SERVER_ADDR’] 服务器的IP地址
$_SERVER[‘REMOTE_ADDR’] 服务器的IP地址
$_SERVER[‘SERVER_NAME’] 服务器的名称
$_SERVER[‘REQUEST_TIME’] 请求时间
$_SERVER[‘QUERY_STRING’] url问号后面的参数
$_SERVER[‘HTTP_REFERER’] 上级请求的页面
$_FILES
$_ENV -
NULL
三种情况
直接赋值为NULL,未定义的变量,unset销毁的变量 -
预定义常量
__FILE__ 显示当前代码在多少行
__LINE__ 获取当前文件的绝对路径
__DIR__ 获取当前文件所在路径
__FUNCTION__ 获取当前函数的名称
__METHOD__ 当前方法的名称
__CLASS__ 获取当前类名
__NAMESPACE__ 获取当前命名空间
- 求输出
function &myFunc()
{
static $b = 10;
return $b;
}
$a = myFunc();
print $a;
$a = &myFunc();
$a = 100;
print myFunc();
由于 $a 和 $b 互为引用,指向同一个内存空间:
10
100
- 外部文件引入
include/require
1.如果给出路径名,则按照路径名查找,否则从include_path中查找
2.如果include_path中也没有,则从调用脚本文件所在目录和当前目录查找
通过get_include_path()获取 include_path
require/require_once
include/include_once
区别:
php会检查该文件是否已经被包含过,如果是则不会再次包含
- 系统的内置函数
时间日期函数
date(), strtotime(), mktime(), time(), microtime(), date_default_timezone_set()
IP 处理函数
ip2long(), long2ip()
- 文件的读取/写入
打开文件,将文件内容读取出来,在开头加入Hello World,将拼接好的字符串写回文件.
$file = './hello.txt';
$handle = fopen($file, 'r');
$content = fread($handle, filesize($file));
$content = 'Hello World' . $content;
fclose($handle);
$handle = fopen($file, 'w');
fwrite($handle, $content);
fclose($handle);
- 目录的遍历
function visitDir($dir, $str){
$handle = opendir($dir);
$str = $str . '-';
while(($d = readdir($handle)) !== false){
if($d != '.' && $d != '..'){
print $str . $d . "\n";
if(is_dir($dir . '/' . $d)){
visitDir($dir . '/' . $d, $str);
}
}
}
}
$str = '';
visitDir('/home/hb/go/src/go_ldap/', $str);
- 会话控制技术
通过$_GET 参数传递
不安全
Cookie
SET: set_cookie($name, $value, $expire, $path, $domain, $secure)
GET: $_COOKIE
DELETE: set_cookie($name, '', time() - 1000);
优点:
- 存储在客户端,不会占用服务器资源
- 不安全,客户端可以禁止cookie
存储在客户端的文件 相当于会员卡
SESSION
基于COOKIE,SESSION存储于服务器,
session_start()
$_SESSION;
session_destroy()
配置:
session.auto_start
session.cookie_domain
session_cookie_lifetime
session_coolie_path
session.name
session.save_path
session.use_cookies
session.use_trans_sid
// 每100次调用session_start()的时候会有几率去清除超过1440s的文件
session.gc_probability 1
session.gc_divisor 100
session.gc_max_lifetime 1440
优点:信息安全
缺点:占用服务器资源,分布式问题
如果禁用cookie如何处理session?
可以通过url传递session_id
<a href="1.php?<?php echo session_name() . '=' . session_id(); ?>">
<a href="1.php?<?php echo SID; ?>"> // 如果开启了cookie SID为空,如果禁用了cookie SID 为session_name() . '=' . session_id()
session_set_save_handler() // 将session存储在redis或memcache