1.strchr()==strstr()
函数搜索字符串在另一字符串中的第一次出现,区分大小写;
并返回从该位置到字符串结尾的所有字符;
不区分大小写用stristr();
strchr(string,search,before_search);
2.
stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
3. substr(string,start,length)
4.php冒泡排序
//方式1
function bubble_sort($array){
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$i; $j<$count-1; $j++){
if ($array[$i] > $array[$j]){
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
}
}
}
return $array;
}
//方式2
for ($i=0; $i <$count ; $i++) {
for ($j=0; $j < $count-1; $j++) {
if($list[$j]>$list[$j+1]){
$temp=$list[$j+1];
$list[$j+1]=$list[$j];
$list[$j]=$temp;
}
}
}
5.快速排序法(实际是冒泡排序的一个优化)
function quickSort($list){
if(count($list)<=1){
return $list;
}
$listkey = $list[0];
$leftArray = array();
$rightArray = array();
for ($i=1; $i <count($list); $i++) {
if($list[$i]<$listkey){
$leftArray[]=$list[$i];
}else{
$rightArray[]=$list[$i];
}
}
$leftArray=$this->quickSort($leftArray);
$rightArray=$this->quickSort($rightArray);
return array_merge($leftArray,array($listkey),$rightArray);
}
6.php顺序查找(是在一个已知无(或有序)序队列中找出与给定关键字相同的数的具体位置)
//$n:查询的次数;$k:查询的值
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}
//二分查找
/**
* [bin_sch description]
* @param [type] 查询的list
* @param [type] $low 开始查找的索引
* @param [type] $high 结束的索引
* @param [type] $k 查找的值
* @return [type] [description]
*/
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return $this->bin_sch($array, $low, $mid-1, $k);
}else{
return $this->bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
7.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if (!is_array($arr)) {
return false;
}
$keysvalue = array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}
8.简述post和get传输的最大容量分别是多少?
POST 根据你php.ini文件配置
GET的话 大小限制在2KB
9.用最少的代码写一个求3值最大值的函数?
function compare(a,b,c){
return (a>b?a:b)>c?(a>b?a:b):c;
}
17:define() 函数定义一个常量。
18.业务需求:
19、php静态变量(static声明):保存在静态内存中;
php局部变量:
<?php
$i = 1;
$a = 2;
function test(){
var_dump($i+$a);
}
test();//打印多少
?>
php全局变量:
<?php
function test(){
global $i,$a;
global $i = 2;//错误。必须先声明,再赋值
$i = 1;
$a = 2;
}
?>
php超全局变量:
<?php
var_dump($GLOBALS);
?>
20、php变量的传值和引用传值
<?php
/**
* 一般传值
* @return [type] [description]
*/
function test1($i){
$i+=10;
var_dump($i);
}
$i = 1;
test1($i); //11
var_dump($i);//1
//引用传值:引用的是地址,会修改起变量本身
function test2(&$i){
$i+=10;
var_dump($i);
}
$i = 1;
test1($i); //11
var_dump($i);//11
?>
21、php特殊形式的函数
1.可变函数的使用(就是一个等量代换的原则)
<?php
$funaName = "md5";
echo $funaName();//php引擎会解析成函数
echo md5();
echo $test();//如果没定义一个函数,输出报错
?>
2.递归函数的使用:(自己调自己)
<?php
function test($i){
echo $i."--<br/>";
--$i;
if($i>=0){
test($i);
}
echo "i=".$i."--<br/>";
}
test(2);
?>
3.匿名函数的使用:(闭包函数,允许临时创建一个没有函数名的函数)
<?php
$test = function($a,$b){
echo "this is a test==".$a+$b;
};
$test(1,2);
?>
4.回调函数的使用:
<?php
function play($username){
echo $username." is playing...<br/>";
}
function sing($username){
echo $username." is sinig...<br/>";
}
function doWhat($funaName,$who){
$funaName($who);
}
echo doWhat("play","zhangsan");
扩展系统函数:array_map(),array_filter(),call_user_func(),call_user_func_array()
?>
5.可变参数形式的函数的使用
22.php包含文件方式:include(),include_once(),require(),require_one()
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
以下为补充:
1. include有返回值,而require没有。
2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。
3. include_once()的作用和include()是几乎相同的
唯一的差别在于include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入(这项功能有时候是很重要的,比方说要导入的里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个文件,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复宣告第二次)。
4. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。
这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。
5. 如同include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
5. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。
7. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
8. include一般是放在流程控制的处理部分中PHP程序网页在读到include的文件时,才将它读进来。这种方式可以把程序执行时的流程简单化。
23.用php的十种以上的方式获取文件扩展名:test.html.php
<?php
$fileName = "test.html.php";
//1.
$name = substr(strrchr($fileName, '.'),1);
var_dump($name);
//2.
$name = substr($fileName, strrpos($fileName, ".")+1);
var_dump($name);
//3
$list = explode(".",$fileName);
$name = end($list);
var_dump($name);
//4
$info = pathinfo($fileName);
var_dump($info["extension"]);
//5
$name = pathinfo($fileName, PATHINFO_EXTENSION);
var_dump($name);
//6
preg_match("/\s*.php$/",$fileName,$match);
$name=$match[0];
var_dump($name);
//7.
$list = explode(".",$fileName);
$name = array_pop($list);
var_dump($name);
//8
preg_match_all('/\.[^.]*/',basename($fileName),$res);
$name = array_pop($res[0]);
var_dump($name);
//9
$name = str_replace('.','',strrchr($fileName,'.'));
var_dump($name);
?>
24.PHP实现页面纯静态化
利用file_put_content,内存函数
25.常见的几种加密技术
md5()加密(单项加密);
crypt()加密(单项加密);
Sha1()加密算法;
url编码加密;
base64编码加密;
26.php打印前一天时间格式
$data=date("Y-m-d H:i:s",strtotime("-1 day"));
print_r($data);