字符串相关函数
1、implode 使用一个字符串将数组变成字符串
<?php
$array = array('lastname', 'email', 'phone');
$result = implode(",", $array); //lastname,email,phone
?>
2、explode — 使用一个字符串分割另一个字符串,返回一个数组
<?php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>
3、字符串截断
<?php
substr("Hello world",6); // world
substr(string,start,length)
?>
4、替换
<?php
str_replace('@','#','[email protected]') //shwei#126.com
?>
数组
1.数组合并
array_merge (array array1 array2…,arrayN)
2、单数组去重复 array_unique()
3、多数组去重复 array_keys(array_flip($arr1)+array_flip($arr2))
<?php
$a = array('1001','1002');
$b = array('1002','1003','1004');
$c = array('1003','1004','1005');
$d = array_keys(array_flip($a) + array_flip($b) + array_flip($c));
?>
4、数组追加 array_push($arr, e1)
5、删除 unset($arr2[$key]);
排序
sort() 函数用于对数组单元从低到高进行排序。 array_multisort($a,SORT_ASC,$b,SORT_DESC);
rsort() 函数用于对数组单元从高到低进行排序。
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。
include,require
使用require,如果文件没有包含成功,就会报出一个fatal error,整个程序就中止了。
使用include,如果文件没有包含成功,就会报出一个普通的warning,之后的代码仍会执行。
如果你的Web程序使用了MVC这种对文件包含强依赖的设计方法,请使用require_once。
include_once() 如果该文件中的代码已经被包含了,则不会再次包含
merger 和 + 的区别
array_merge()函数用于将一个或者多个数组的单元合并起来,返回结果为数组。
①如果合并的数组中有相同的字符串键名,则后面的值覆盖前面的值,键名不变
②如果合并的数组中有相同的数字键名,则后面的值不覆盖前面的值,而是依次附加到后面
③如果只有一个数组,并且该数组是数字索引的,则键名会以连续方式重新索引。
array+array是数组的联合运算
①如果合并的数组中有相同的字符串键名,则取最先出现的值而把后面拥有相同键名的那些值“抛弃”
②如果合并的数组中有相同的数字键名,则取最先出现的值而把后面拥有相同键名的那些值“抛弃”
③如果只有一个数组,并且该数组是数字索引的,则键名会以连续方式重新索引。
session扩展将session数据存在哪里
保存在文件或数据库中,默认情况下,PHP.ini 中设置的 SESSION 保存方式是 files
静态变量
<?php
function add(){
static $a = 1;
echo $a,"<br />";
$a++;
}
add(); //1
add(); //2
add(); //3
add(); //4
?>
<?php
$a = "hello";
$a[] = "worlld";
echo #a
报错
?>
$a=[1=>3,5=>5,33,'b'=>55,'d'=>44,34,3=>3,66];键名分别是什么
Array ( [1] => 3 [5] => 5 [6] => 33 [b] => 55 [d] => 44 [7] => 34 [3] => 3 [8] => 66 )
1. 什么事面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。
2. SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
1、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。
2、SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。
禁用cookie后,session不能正常使用。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。
Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。
3. HTTP 状态中302、403、 500代码含义?
一二三四五原则: 一. 消息系列 二成功系列 三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列
302:临时转移成功,请求的内容已转移到新位置403:禁止访问 500:服务器内部错误 401代表未授权。
4.请问 varchar 和 char有什么区别?
char是固定长度的字符类型,分配多少空间,就占用多长空间。Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。
由于varchar类型是可变的,所以在数据长度改变的时,服务器要进行额外的操作,所以效率比char类型低。
5. 数据库引擎MyISAM和 InnoDB 的基本区别?
MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,而InnoDB类型支持事务,行锁,有崩溃恢复能力。读写速度比MyISAM慢。
6. isset() 和 empty() 区别
Isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假,empty判断变量是否为空为假,只可传一个变量,如果为空为假则返回真。
7. 如何在页面之间传递变量(至少两种方式) ?
GET,POST,COOKIE,SESSION,隐藏表单
8. 写出匹配URL的正则表达式.
‘/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\w-\.\/\?\%\&\=]*)?/i’
9. 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。
10.电子邮件正则表达式
preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email
11.自动加载类
function __autoload($class_name)
12.你所知道的php数组相关的函数?
array_combine()----通过合并两个数组来创建一个新数组
range()----创建并返回一个包含指定范围的元素的数组
compact()----建立一个数组
array_chunk()----将一个数组分割成多个
array_merge()----把两个或多个数组合并成一个数组
array_slice()----在数组中根据条件取出一段值
array_diff()----返回两个数组的差集数组
array_intersect()----计算数组的交集
array_search()----在数组中搜索给定的值
array_splice()----移除数组的一部分且替代它
array_key_exists()----判断某个数组中是否存在指定的key
shuffle()----把数组中的元素按随机顺序重新排列
array_flip()----交换数组中的键和值
array_reverse()----将原数组中的元素顺序翻转,创建新的数组并返回
array_unique()----移除数组中重复的值
13.以下程序,变量str什么值的情况下输入111?
if( ! $str ) { echo 111; }
在$str值为:0,’0′,false,null,”"
14.用PHP打印出前一天的时间
date('Y-m-d H:i:s', strtotime('-1 days'))
上个月第一天 date('Y-m-01', strtotime('-1 month'))
上个月最后一天 date('Y-m-t', strtotime('-1 month'))
15.以下语句输出的结果是什么
$a = 3;
echo "$a",'$a',"\\\$a","${a}","$a"."$a","$a"+"$a";
3 $a \$a 3 33 6
16.php中将当前页面重定向到另一个页面怎么写?
header();
17. $a = array(1,2,3);
$a[] = $a;
$a[] = &$a;
内存泄漏,当自身引用自身时,这个容器不能被清楚,这就造成了内存泄漏
18.php的垃圾回收机制
垃圾回收机制GC只是一个引用计数的概念,当变量的引用数等于0时,就会被销毁。
php的每个变量都是存在一个叫做zval的容器里面,这个容器不仅包含了这个变量的值和类型,还包含了另外两个重要的信息,“is_ref”和“refcount”,“is_ref”看名字就应该知道大概和引用相关,它是一个bool值,如果这个值是true那么代表这是一个引用变量,否则是普通变量。“refcount”指的是有多少个变量(符号)指向这个zval容器。
如果一个zval容器的refcount增加,说明有新的变量(符号)指向这个容器,那么这个容器当然不会是垃圾,它将被继续使用。
如果一个zval容器的refcount减少到0了,那么说明没有变量(符号)指向这个容器,它就会被php引擎销毁。
如果一个zval容易的refcount减少了,但是不是0,那么这个容器就有可能是垃圾,就会被垃圾回收机制所管理。