您好,欢迎访问一九零五行业门户网

php学习01

name = $name; $this->age = $age; } public function __set($name,$value){ $this->$name = $value; } public function __get($name){ if($name=='fuck') returnfuck!; if(isset($this->$name)){ return$this->name; }else{ return null; } } public function __call($name,$args){ echo$name ,mothod不存在; var_dump($args); } public static function __callstatic($name,$value){ echo静态方法$name不存在; } public function __clone() { $this->name = 我是被克隆的; } public function __sleep() { // echo正在被序列化; return array(name); } //重新生成对象时,调用 public function __wakeup() { $this->name = 张三; $this->age = 234; } public function __tostring() { returna; }}//$a = new a(张三,22);//echo$a->name;//$a->name = 张三;//echo$a->name;//$a->get(xue,3,sf) ;//$a1 = clone $a;//echo$a->name,
,$a1->name;//$p_str = serialize($a);//echo$p_str;//$a2 = unserialize($p_str);//var_dump($a2);//function __autoload($classname){// include $classname..php;//}//echo$a2->fuck;//a::ha();/* * 1. echo 和print 的区别 * echo 是语句,不是函数, 不用括号,可以输出多个值,没有返回值,不能输出数组和对象 只能输出简单的类型,如 int,string * print 是语句,不是函数,不用括号,只能输出一个值,有返回值1,不能输出数组和对象,只能输出简单的类型,如int,string * 2.print_r() 和 var_dump() * print_r() 是函数,可以输出复合类型和简单类型,如int float ,string ,array object,当输出对象时以机构表示如 object{},当输出 * 数组时表示为array() * var_dump() 是函数,输出变量的内容,类型,长度,可以输出简单类型,复合类型,常用来调试 * 3.printf 是函数,类似c语言,格式化字符串输出 * 4.sprintf 函数,类似c语言,格式化字符串后返回一个格式化后的字符串不输出 * *///print_r(3.55);//$arr = array(xue,3);// print_r($arr);// var_dump($arr);//$nb = sprintf(%s 是个%d吊,haha,3);//echo$nb;/* * 获取文件内容方式 * 1.file_get_contents(); * *///$txt = file_get_contents('data.txt');//echo$txt;//$file = fopen(data.txt,r);//while(!feof($file)){// $line = fgets($file);// // echo$line;// //}//while(!feof($file)){// $char = fgetc($file);// echo$char;//}/* * strlen() he mb_strlen的区别 * 两者都是求字符串长度的函数 * 在strlen只是获得字符串所占的字节数,无法正确处理中文字符 * 当为gb2313编码时,一个汉字占2位,当为utf-8编码时,一个汉字占3位 * mb_strlen()能够正确处理汉字,第二个参数为编码的类型,默认为utf-8,默认为php内部的编码,可以用mb_internal_encoding()来查看 * mb_strlen()并不是php核心函数, 需要加载扩展库来使用,在php.in中 extension = php_mb_string.dll *///$str = 黛玉123f;//echo strlen($str); // 输出10//echo mb_strlen($str,'utf-8'); //输出6//echo mb_internal_encoding();//输出 iso-8859-1///* * php数组函数 * 数组的键名和值 * 1.is_array()判断是否是数组,是返回true,不是返回false,类似 is_int(); is_float(); * 2.array explode ( string $delimiter , string $string [, int $limit ] )此函数将字符串分割为数组 * 3.string implode ( string $glue , array $pieces )将数组分割为字符串 * 4.array_values()返回数组所有的值,请给其建立数字索引 * 5.array array_keys ( array $input [, mixed $search_value = null [, bool $strict = false ]] ) * 6.array_key_exists() 检索指定的键名或索引是否在数组中,存在返回true,否则返回false * 7.array_flip()交换数组的键名和值,若存在相同值,则以最后一个键值为准 * 8.array_search() 在数组中搜索给定的值,若存在返回对应的键名,否则返回false * 9.检索数组中是否存在某个值,存在返回true,不存在返回false * 10.isset($arr['apple'] 检测指定的键名知否存在给定的数组中,存在返回true,否则返回false * 数组的内部指针 * current($arr); 返回数组中的当前单元 pos($arr); 返回数组中的当前单元 key($arr); 返回数组中当前单元的键名 prev($arr); 将数组中的内部指针倒回一位 next($arr); 将数组中的内部指针向前移动一位 end($arr); 将数组中的内部指针指向最后一个单元 reset($arr; 将数组中的内部指针指向第一个单元 * each($arr); 返回数组当前指针单元的键名和值,以新数组的形式,且当前数组的指针向前移动一步,若到达数组最后一个单元, 则停留为最后一个单元 * 键值对被返回为四个单元的数组,键名为>,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。 * list($key,$value); 不是真正的函数,是一种语言结构,获得数组当前元素的键名和值,并赋值给变量,list只能用于没有键名和索引的数组 * * 数组和变量之间的转换 * extract() 从数组中将变量导入到当前的符号表 * 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。 * compact() 将变量变为数组 * 数组的分段和填充 * array_slice 在数组中取出一段 * array_slice($array,int offset,[int length,false|true]); * 若偏移量为负数,则从数组末端开始数 * 若长度为负数,则序列将终止在距离数组末端这么远的地方 * array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] ) * 删除数组的某段,根据offset和length,可以用replacement替换被被删除的单元,替换个数和被替换的单元的个数一致,如果为数组,则键名 * 不保留,只替换值,也可以为字符串,如果没有删除的单元,那么替换的变量将会被插入到offset的位置 * * 分割多个数组 * array_chunk(array,size,[true|false]) * 将一个数组分割成多个数组,每个数组的元素量为size,size小于1将报错,可能最后一个数组的元素小于size,默认为false,将丢掉原数组的索引或键名 * 重新建立从0开始的数字索引,为true时,保留原来的键名或索引 * * 数组的填充 * array_pad(array,length,value); * 将数组用value填充到length长度, * 若length小于等于数组的长度,则不填充 * 如果length为负数, 则向左填充 * * 数组与栈 * array_push(array,value,,,); * 将一个或多个值压入数组栈,返回此数组的元素个数 * array_pop(array); * 返回一个数组的栈顶元素,如果数组为空或者不是数组,则返回null * * 数组与列队 * array_shift(array); * 将返回数组的第一个元素,数组的元素个数减一,后面的元素向前移动,数字键名从0开始重新技术,关联键名不变 * 若数组为空,或不为数组,则返回null * array_unshift(array,value,,,); * 将值插入数组的开头,所有的数字索引将重新从0开始技术,关联键名不变 * * 数组排序 * 键值排序 * sort(array,[]); 将数组的值从小到大排序,操作成功返回true,否则返回false * 忽略键名的数组排序 * rsort(array[],,),将数组的值从大到小排序,操作成功返回true,否则返回false * 忽略键名的数组排序 * usort(array,funcname);调用用户定义的函数对数组排序 * 忽略键名的数值排序 * * asort() 保留键名的数值排序 * arsort() 保留键名的数值排序 * uasort() * ========= * 键名排序 * ksort() 用键名排序,主要用于关联数组 * krsort() 按照键名逆序排序 * uksort() 自定义函数排序 * ========= * 自然排序法排序 * natsort();自然排序 * natcasesort()自然排序,忽略大小写 * * 数组的计算 * array_sum()计算数组元素的和 * 数组的合并 * array_merge(array1,array2);则键名会以连续方式重新索引 * array1+array2 对于相同的键名只保留第一个 * 如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符 * array_merge_recursive() 递归合并数组 * 如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。 * * 数组的差集 * array_diff(array1,array2,array3,,,);返回在array1中但不在其他数组中的元素 * array_diff_assoc(array1,array2,array3...);返回在array1中但不在其他数组中的元素,键名也做比较,只有键名和键值都相同时才算 * * 数组的交集 * array_intersect(array1,array2,,,);返回数组的交集 * array_intersect_assoc(array1,array2,,,);返回数组的交集,键名也做比较 * * 其他的数组函数 * range(start,max,step);创建一个start到max范围的一个数组,step为步长,默认为1 * array_unique()除去数组中重复的值 * array_reverse();反转数组,若第二个参数为true时则保留键名 * array_rand(array,size);随机返回数组中的一个或多个单元的键名,若为多个则返回包含多个键名的数组 * shuffle(array); 将数组的元素打乱,返回false或true * * * *///var_dump (is_array(3));$arr = explode(,,i,am,hello,3);print_r($arr);echo implode($arr);//array_values()$arr = array_values(array('name'=>'daiyutage',age=>20));print_r($arr);$arr = array_keys(array('name'=>daiyutage,age=>20));print_r($arr);var_dump(array_key_exists('name',array(name=>daiyu)));var_dump (array_flip((array(a=>1,b=>1,ddd=>33))));echoin_array(daiyutage,array(name=>daiyutage));$arr = array(name=>1);echo isset($arr['name']);$foo = array(robert => bob, seppo => sepi,name=>3324);$bar = each($foo);print_r($bar);$bar = each($foo);print_r($bar);$info = array(name,haha);unset($a);list($a[0],$a[1]) = $info;//print_r($a);////$name = diayutage;//extract(array(// name=>xue,// age=>22,// school=>lut//),extr_prefix_same,'wx');//echo$name, ,$age, ,$school, ,$wx_name;//课本,1,2,3,《书读百遍,其义自现》//compact$firstname = peter;$lastname = griffin;$age = 38;$color=red;$rs = array(color,fx);//$result = compact(firstname, lastname, age,$rs);//print_r($result);$arr = array(a,xx=>b,6=>c,d,e);//print_r(array_slice($arr,2,-1,true));// array_splice($arr,1,-4,xxxxx);// print_r($arr);//print_r(array_chunk($arr,2,false));//print_r(array_pad($arr,-10,33));//print_r(array_push($arr,daiyutage,fff));//echo array_pop($arrs);//echo array_shift($arr);array_unshift($arr,array(hasdf,sf));$fruits = array(lemon, sdfsf=>orange, banana, apple);rsort($fruits);function cmp($a,$b){ return$a==$b?0:$a$b?-1:1;}//$brr = array(fsf,fs=>3,10=>2,4=>244,3244);//ksort($brr);//print_r($brr);//print_r(array_merge($fruits,$brr));//则键名会以连续方式重新索引//$a = array(3=>red,hello,hello);//$b = array(red,fe);//print_r(array_intersect_assoc($a,$b));//var_dump(range(0,12,9));//print_r(array_reverse($fruits));//print_r(array_rand($fruits));//(shuffle($fruits));// print_r($fruits);///* * 时区设置 * date_default_timezone_set()设置时区,时区不正确会报错抛出 e_warning 而不是 e_strict。不区分大小写 * date_defalut_timezone_get()获取时区 * 中国时区为asia/shanghai 或 prc * *///echo date_default_timezone_get();//error_reporting(e_all);//date_default_timezone_set(prc);//echo date_default_timezone_get();///* cgi,php_mod,fastcgi的区别 * cgi 通用网关协议 * 当客户端请求服务器时,服务器fork一个进程,执行php.cgi程序对php页面进行解析,解析完进程销毁,返回服务器, * 每次的请求过程,fork->执行->销毁,效率很低,耗费较多的系统资源 * php_mod * php解释器以模块的形式同apache服务器一起启动,使用同一个进程 * fastcgi * cgi的增强版,相当于一个中间层,使用一个进程,客户端->服务器->fastcgi->php解释实例,fastcgi用一个进程常驻内存,并创建多个cgi实例 * apache与fastcgi的通信为tcp通信,即fastcgi可以为本机,也可以为远程主机 * apache与cgi的通信为进程间通信,必须为同一主机 * 小总结: cgi : 需要开启若干个进程; fastcgi : 需要额外开启一个进程; php_mod :无需开启额外进程,因为php解析器已集成到web服务器中,跟web服务器在同一个进程。 * * php_mod配置方式 * 在apache中,httpd.conf中 * 1 loadmodule php5_module c:/php5/php5apache2_2.dll//大约line 1272 phpinidir c:/php5/php.ini3 //修改配置4 directoryindex index.html index.php//追加index.php5 addtype application/x-httpd-php .php //line 408左右添加 * cgi配置方式 * * *///error_reporting(e_all);//setcookie(haha);/* * cookie 与 session * cookie['login'] = true; * a访问 * session盒子开 * session['login'] = true; * b访问 * session盒子开 * session['login'] = true; * session 在内存中,如果不区分每一个客户端的session,那么session将无法使用 * 所以需要将每一个请求的session与其客户端关联 * 方法: * 当第一次请求服务器时,服务器生成一个session_id, * 通过http头将session_id发送给浏览器,浏览器保存在将此session_id保存在本地的cookie中 * 当再次请求服务器时,浏览器发送此cookie,服务器收到后用本地cookie中的session_id来访问此客户端的session * * 当cookie被禁用时,如何使用session * php默认有两种session传递方式 * 1.cookie * 2.url 如.php?sid=xxx,或者post提交方式,手动通过url添加sid * url 通过设置php.ini参数,自动添加到url * session.use_cookie=1 * session.use_>0 * session.use.trans_id=1 * 然后php会自动在url加phpsession=xxxx * * 3.文件保存sid,第一个页面把sessionid保存在文件中,第二个页面先从这个文件中取sessionid在判断是否登录 * 4.数据库保存sid,和文件原理相同 * * 当cookie被禁用时,浏览请求时不会再发送cookie到服务器,那么服务器就会收不到cookie=phpsession的,不能使用session * 使用url * 在前一个页面开启session后,用session_id()获得session_id,然后以get/post方式传递到后一个页面 * 第二个页面在用此sessio_id来设置 session_id(),然后开启session_start(),就可以使用前面穿过来的session * 注意:session_id()必须在session_start()之前调用 * * * */session_start();$_session['login'] = daiyutage;//$sid = session_id();echo另一个页面;
').addclass('pre-numbering').hide(); $(this).addclass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadein(1700); }); });
以上就介绍了php学习01,包括了include,进程间通信,对象,索引,静态方法方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息