# PHP-learning **Repository Path**: huge-blz/PHP-learning ## Basic Information - **Project Name**: PHP-learning - **Description**: PHP学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-23 - **Last Updated**: 2024-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PHP学习 2017年5月28日 星期日 1.如果文档中只有PHP结束标记要省略掉如:";//k //将n变成q,修改的时候只能一个字符替换一个字符 $string{2} = 'q'; echo $string."
";//kiqg //删除字符串中的i $string{1}=''; echo $string."
";//kqg //在末尾添加感叹号 $string{4} = '!'; echo $string."
";//kqg! //PHP中一个汉字等于三个字符,不要对中文字符进行操作。 $string1 = '你好'; echo var_dump($string1)."
";//长度为6 ``` 5.heredoc作用相当于双引号,比较适合写大段字符串,写法为:<<<名称..所需字符串..名称 ``` ``` 6.nowdoc的写法:<<<'名称'.....名称。注意:名称的开头必须用单引号包裹,名称的结尾不用单引号包裹。==和heredoc一样,结束名称之前不能有任何的输出,空格都不行== 7.数组、对象、资源、空。数组可以存任何类型 数组:$arr=array() 对象:$stu = new Student(); 8.设置错误级别 ``` //设置错误级别,E_ALL但是出了NOTI类型的 error_reporting(E_ALL&~E_NOTICE); $string = '1234'; echo $string;//1234 unset($string);//销毁一个变量 echo($string);//null ``` 复合类型--》数组、对象资源 #### 特殊类型 1资源(resource) 资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布,在不需要的时候应该被及时释放。如果我们忘记了释放资源,系统自动启用垃圾回收机制,在页面执行完毕后回收资源,以避免内存被消耗殆尽。 2.空类型 NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值。当被赋值为NULL,或者尚未被赋值,或者被unset(),这三种情况下变量被认为为NULL 3.通过unset()销毁变量 ``` $a=$b=$c='king'; var_dump($a, $b, $c);//可以传多个参数 unset($a, $b, $c);//可以传多个参数 ``` #### 五种伪类型:void、number、mixed、callable、... #### PHP中的数据类型转换 1.自动转换(饮食转换)--程序会根据上下文环境自动的进行转换 - 其他类型转换成数值型 1.true-->1 2.false-->0 3.null-->0 4.字符串如果以非法字符开始,直接转换成0,如果字符串以合法数值开始,一直取到第一个非法数值为止 - 其他类型转换成字符串型 1.数值型直接转换成数值本身 2.true-->1 3.false-->空字符串 4.null-->空字符串 5.对象不能直接转换成字符串 6.数组-->Array - 其他类型转换成布尔类型,转换成false的有: 1.0-->false 2.0.0-->false 3.null-->false 4.空数组array()-->false 5.空字符串、'0'、"0"-->alse 2.强制转换(显示转换) ### 2017年6月7日 星期三 #### 3.3强制转换中的临时转换 1.通过(变量类型)$变量名称 ``` //浮点转整型 $var1 = 3.8; var_dump((int)$var1, (integer)$var1);//3,并非四舍五入 //转换为空 $var1 = true; var_dump((unset)$var1);// null ``` 2.通过系统函数实现 ``` $var = true; var_dump(strval($var)); ``` ==2017年6月25日 星期日== #### 强制转换中的永久转换 1.settype(var, 'type');将变量设置成指定类型 ``` $var1 = '123'; var_dump($var1); //string settype($var1, 'int'); var_dump($var1); // int ``` 2.检测变量类型:is_类型.注意不要使用gettype()得到变量的类型,因为后续返回值可能会改变 ``` $var2 = 123; var_dump(is_int($var2)); //true ``` 3.检测是否为数值型或者是字符串形式的数值 ``` $var3 = '123'; var_dump(is_numeric($var3)); //true $var4 = '123a'; var_dump(is_numeric($var4)); //false ``` #### 常量-系统常量及自定义常量 1.系统常量 ``` echo PHP_VERSION; //PHP版本 echo PHP_OS; //系统版本 echo PHP_INT_MAX; //整型最大值 ``` 2.自定义常量 - define函数定义常量 ``` define($name, $value); 1.常量名称不加$符号 define('TEST', 'this is a const'); echo TEST; 2.常量名称最好大写,以字母或者下划线开始 3.常量默认区分大小写 4.常量定义之后可以在任何位置使用,作用域是全局的 5.常量的值可以是标量类型也可以是数组 ``` - const定义常量 ``` const TEST1 = 'www.wanliyangguang.com'; echo TEST1; //根据常量的名称获取常量的值 echo constant('TEST1');//www.wanliyangguang.com ``` - defined检测常量是否存在,如果存在返回true,否则返回false ``` var_dump(defined('TEST1'));//true,注意参数是字符串 ``` - 获取所有已经定义的常量:get_defined_constants(),返回的是包含系统常量和自定义常量的数组 ``` print_r()//打印数组的信息 print_r(get_defined_constants()); ``` 3.魔术常量 - __LINE__:得到当前的行号 - __FILE__:当前文件的绝对路径和文件名 - __DIR__:得到当前文件的路径,不带文件名 - __FUNCTION__:得到函数名 - __CLASS__:得到类名 - __METHOD__:得到当前类的方法名称 - __NAMESPACE__:命名空间 - __TRAIT__:当前TRAIT的名称 #### PHP中的预定义变量 - $GLOBALS超全局变量,包含以下所有的预定义变量 - $_SERVERS服务器和执行环境信息变量 - $_ENV环境变量 - $_COOKIE HTTP cookies - $_SESSION Http session变量 - $_FILES 文件上传信息变量 - $_GET GET变量,主要接收以问好形式传递的数据 - $_POST POST变量 - $_REQUEST $_GET+$_POST_$COOKIE #### PHP中的表达式与运算符 1.**幂运算 ``` echo 3 ** 2; // 9 ``` 2017年6月26日 星期一 1.自增自减 ``` //前自增自剪法 $var = 12; echo ++$var, "
"; //13 echo --$var, "
"; //12 //后自增自减 $var1 = 12; echo $var++, "
"; //12 echo $var--, "
"; //13 ``` 2.bool类型不支持自增自减运算符 3.null只支持自增运算符号 ``` $var = null; echo ++ $var; //1 ``` 4.得到指定字符的ascii码值 ``` $var = 'a'; echo ord($var); // 97 ``` 2017年7月1日 星期六 1.chr();根据值得到对应的ASCII ``` echo chr(98); // b ``` 2.字符串连接符号. ``` $var3 = 'hellow'; $var4 = 'world'; $var5 = $var3.$var4; echo $var5, "
"; // helloworld ``` 3.mt_rand(min, max);产生随机数 4.验证码 ``` $code = ''.mt_rand(0, 9).''; $code .= ''.mt_rand(0, 9).''; $code .= ''.mt_rand(0, 9).''; $code .= ''.mt_rand(0, 9).''; echo $code; ``` 5.比较运算符 2017年7月9日 星期日 1.逻辑运算符 - 逻辑与 && or and - 逻辑或 || or or - 逻辑异或 xor 相同为假 ``` false xor false = false; false xor true = true; true xor true = false; ``` - 错误抑制符:抑制错误输出,通过@符号加到会产生错误的表达式前,但并不是所有的错误都可以抑制的,个人感觉没啥用 ``` @var_dump(asdadf); ``` 3.运算符优先级 -.和+是同一级别的 ``` $i = 3; $j = 8; //期望输出的结果为:3+8=11,然而输出的是11,原因是.和+是同一级别的,实际运算为:"3+8=3"+8=11 echo "{$i}+{$j}=".$i+$j, '
'; ``` 4.流程控制 - date($format, $time); ``` date_default_timezone_set('PRC');//设置时区,PRC中华人民共和国 date("Y年m月d日 H:m:s");//输出当前时间 date('w');返回一周的第几天0-6 ``` - time()得到当前的时间戳,返回的是毫秒数 5.if的另一种写法 ``` if(true): echo "aa", "
"; else: echo "bb", "
"; endif; ``` 6. exit() or die()程序终止执行 ``` exit("程序终止执行!!!"); ``` 7.is_numeric($num1)判断是否为数值类型 8.error_reporting(E_ALL &~ E_NOTICE); 9.for循环 ``` for ($i = 1; $i < 0; $i++){ } echo $i, "
";//1,因為for循環沒有走$i++; ``` - 验证码 ``` for ($k = 0; $k < 4; $k++){ echo ''.mt_rand(0, 9).''; } ``` 2017年07月10日 星期一 1.goto语句 - 基本应用 ``` echo "starting...
"; goto TEST; echo 'this is a test
'; TEST://TEST标识符 echo 'hello world
'; ``` - goto不能跳入循环,switch...case函数和类 ``` goto TEST; for ($i = 1; $i <= 5; $i++){ echo $i, '
'; TEST: echo 'hello world
'; } //Fatal error: 'goto' into loop or switch statement is disallowed in /Library/WebServer/Documents/php/05liuChengKongZhi/01.php on line 4 ``` - goto可以跳出循环 ``` for ($i = 1; $i <= 5; $i++){ echo $i,'
'; if ($i == 3){ goto TEST; } } TEST: echo 'ending for to TEST
'; //1, 2, 3;ending for to TEST ``` 2.for循环 - 第二个表达式如有多个参数,最后一个作为判断条件 ``` for ($i = 1, $j = 2, $k = 3; $i <= 5, $k <= 4; $i++, $k++){ echo '

hello world

'; }//hello world hello world var_dump($j, $k);//2, 5 ``` - 3.函数中的变量 - 局部动态变量,函数外面无法取到值 ``` function testa(){ $a = 3; echo $a; } testa();//3 echo $a,"
";//报错: Undefined variable: a ``` - 局部静态变量,程序结束才释放,但在函数内部定义的静态变量在函数外面是取不到的。 ``` function testb(){ static $b = 4; $b++; echo $b, "
"; } testb();//5 testb();//6 testb();//7 echo $b;//报错: Undefined variable: b ``` - 全局变量,如果函数想要拿到全局变量,在函数内部必须用global修饰变量 ``` $a = 3; $b = 4; function testc(){ echo $a, "
";//Undefined variable: a echo $b, "
";//Undefined variable: b //要想正确的输出$a, $b global $a, $b; echo $a, "
";//3 echo $b, "
";//4 } testc(); echo $a, "
";//3 ``` 4.值传递和引用传递 - 值传递 ``` $a = 3; $b = 4; function change($c){ $c = 5; echo $c, "
";//5 } change($a); echo $a, "";//3 ``` - 引用传递,值类型前要加&符号 ``` $d = 3; $e = 5; function changeByAddr(&$c){ $c = 5; echo $c, "
"; //5 } changeByAddr($d); echo $d, "
"; //5 ``` - 对象类型是引用类型传递的,调用对象的属性用箭头:-> ``` //stdClass可以看做是PHP的一个基类 $student = new stdClass(); $student -> name = 'fang'; function addAge($obj){ $obj -> age = 18; } addAge($student); print_r($student);//stdClass Object ( [name] => fang [age] => 18 ) ``` 5.参数的默认值 6.可变参数列表 - func_num_args()//返回函数参数的长度 ``` function test(){ echo func_num_args(), "
"; } test(1, 2, 3, 4, 5, 6);//6 ``` - func_get_args()得到参数的所有元素 ``` function test(){ echo func_num_args(), "
"; print_r(func_get_args());//得到参数的所有元素 //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) } test(1, 2, 3, 4, 5, 6); ``` 7.参数的类型 - 参数的类型只能指定为array, 对象, callable ``` 参数指定为callable类型 function test2(callable $a){ $a(); } function callBack(){ logInfo('我是回调函数',false); } test2(callBack);//我是回调函数 ``` 8.可变函数 - method_exists()与is_callable()的区别在于在php5中,一个方法存在并不意味着它就可以被调用。对于 private,protected和public类型的方法,method_exits()会返回true,但是is_callable()会检查存在其是否可以访问,如果是private,protected类型的,它会返回false。 ``` function test3(){ echo 'hello world'; } $func = test3;//$func = 'test3'; // if (is_callable($func))//检测参数是否为合法的可调用结构 if (function_exists($func)){ $func(); } ``` 9.函数的嵌套 - 函数的嵌套定义,所有的函数都是全局函数。 ``` function foo(){ function bar(){ logInfo('bar', false); } } foo();//不调用foo下面的函数会报错,因为没有创建呢 bar();//能调用时因为所有的函数都是全局函数 ``` - 函数的嵌套调用 10.递归调用 11.匿名函数 ``` function test(){ $message = "hello world"; $say = function($str) use ($message){ echo $message, '11', "
"; echo $str; }; return $say; } $fun = test(); $fun('nihao dou'); ``` 12.冒泡算法 2017年07月12日 星期三 ### PHP函数库 1.字符串长度函数: ``` $str1 = NULL; logInfo(strlen($str1), false);//0 $str4 = '中'; logInfo(strlen($str4), false);//3,在UTF-8的环境下一个汉字是3个字节,如果想对中文进行操作,可以用mbstring函数库 ``` 2.字符串的大小写转换 - strtoupper: - strtolower - ucfirst:字符串的首字母转成大写 - ucwords:字符串的每个字母的首字母转成大写 ``` $str3 = "this is a test"; logInfo(ucfirst($str3), false);//Thi is a test logInfo(ucwords($str3), false);//Thi Is A Test ``` 3.字符串替换函数 - str_ireplace(targetStr, reStr, target),替换掉所有元素,不区分大小写 ``` $str = "javascript"; echo str_replace('a', 'b', $str);//jbvbscript ``` - str_replace区分大小写 4.字符串的加密-md5 5.str_shuffle:打乱字符串 ``` //打乱字符串 $str = "12345678910"; $str = str_shuffle($str); logInfo(substr($str, 0, 4), false);//可用来制作验证码 ``` 6.substr(str, start, [length]):截取字符串,如果省略长度 则返回从start至字符结尾之间的字符串 ``` $str = "javascript"; //从第0位开始截取到位置4,但不包含位置4的字符 logInfo(substr($str, 0, 4), false);//java //返回位置4开始到结尾的所有字符 logInfo(substr($str, 4), false);//script //倒数 logInfo(substr($str, -2), false);//pt // logInfo(substr($str, -5, -2), false);//cri ``` 7.删除空格或其他字符相关函数 - trim(str, delChar)删除字符串开始位置的空格或其他字符, 8.字符串转实体函数 9.字符串翻转函数 - strrev(str) 10.字符串位置 - strpos(str, char)返回一个字符在字符串中第一次出现的位置,如果没有出现则返回bool值false - stripos和上面的方法相同,但忽略大小写 - strstr(),返回剩余的字符 ``` $str1 = "abcdef"; $str2 = 'c'; logInfo(strstr($str1, $str2), false);//cdef ``` - strrchr 将搜索字符串在另一字符串中最后一次出现的位置,包含这个字符 ``` $str1 = "abccdcef"; $str2 = 'c'; logInfo(strrchr($str1, $str2), false);//cef ``` - stristr 不区分大小写 - strrev字符串的翻转 ``` logInfo(strrev('1234'), false);//4321 ``` 11.字符串拆分和拼接函数 - array explode(string $delimiter , string $string [, int $limit ])使用一个字符串分割另一个字符串 - string implode(string $glue , array $pieces) 将一个一维数组的值转化为字符串 ``` $arr2 = ["Tom", "John", "Rose"]; $str2 = implode(',',$arr2); logInfo($str2, false);//Tom,John,Rose ``` 12.字符串格式化函数 - sprintf() 如果%号多余arg参数,则必须使用占位符。占位符位于%符号之后,由数字和\$组成 ``` $number = 123; $txt = sprintf("带有两位小数的结果是:%1\$.5f,
不带小数的是:%1\$d", $number); logInfo($txt, false);//带有两位小数的结果是:123.00000, 不带小数的是:123 ``` 2017年07月13日 星期四 ### PHP数学函数 1.取整函数 - 向下取整:floor() ``` $x = 4.7; logInfo(floor($x), false);//4 ``` - 向上取整:ceil() ``` $y = 3.2; logInfo(ceil($y), false);//4 ``` 2.最大值最小值 -max(array)/min(array) 3.幂运算和平方根 - number pow ( number $base , number $exp ) 幂运算 - float sqrt ( float $arg ) 平方根 4.随机数 - rand(min, max) - m_rand(min, max) 5.浮点数四舍五入 - float round (float $val [lentg]) ``` $x = 7.845; logInfo(round($x), false);//8 logInfo(round($x, 2), false);//7.85 ``` 6.浮点数余数 - float fmod ( float $x , float $y ) ``` echo fmod(7.8, 3), "
";//1.8 echo 7.8 % 3, "
";//整数余数的操作//1 ``` 7.数字格式化 - number_format 以千位分隔符方式格式化一个数字 ``` $x = 7895.56; logInfo(number_format($x), false);//7,896 logInfo(number_format($x, 2), false);//7,895.56 ``` 8. strtotime(string $time [, int $now = time() ] )将任何字符串的日期时间描述解析为 Unix 时间戳 对应的参数: - time:time: 日期/时间字符串。正确格式的说明详见 日期与时间格式。 - now:用来计算返回值的时间戳。 ### PHP日期时间函数库 1.日期格式化函数 - date()格式化一个本地时间/日期 2.获取时间的相关信息 - getdate()取得日期/时间信息,得到的是毫秒数,如果不传参的话类似于time() 3.时区设置 - date_default_timezone_set("Asia/shanghai"); - date_default_timezone_get() 取得一个脚本中所有日期时间函数所使用的默认时区 ``` logInfo(date_default_timezone_get(), false);//Asia/shanghai ``` 4.生成唯一ID - uniqid ``` //uuid 8-4-4-4-12 = 32 logInfo(md5(uniqid(microtime().mt_rand()))); ``` 5.获取时间戳和微秒数 - microtime()返回当前 Unix 时间戳和微秒数 如果给出了 get_as_float 参数并且其值等价于 TRUE,microtime() 将返回一个浮点数。 ``` logInfo(microtime(true), false);//1499924809.3547 ``` 6.字符串转时间戳 - strtotime() ``` logInfo(date('Y-m-d H:i:s', strtotime('last day of -1 months')),false);//某月第一天 logInfo(date('Y-m-d H:i:s', strtotime('first day of -1 months')),false);//某月最后一天 ``` ### 数组 1.php中的数组属于符合类型 2.数组的分类 - 索引数组:数组的下标是数字 - 关联数组:数组的下标是字符 注意:PHP中的数组其实是不区分索引还是关联数组,都是根据键名找值的 3.定义数组 - 通过array()创建 ``` 1.测试数组键名的,null会转为空字符串 $arr=array( 3=>'a', 'username'=>'king', 5.6=>'b', true=>'c', false=>'d', null=>'e' ); var_dump($arr); echo '
'; 2.如果下标重复,后面的覆盖前面的值 $arr=array( 'a', 0=>'b' ); var_dump($arr); echo '
'; 3.如果新添加元素没有指定下标,它的下标为已有下标最大值加1(已有下标不全为负数) $arr=array( 'a','b','c', 5=>'d', 19=>'e', 'f' ); var_dump($arr); echo '
'; 4.如果已有下标都为负数,那么新添加元素的下标从0开始 $arr=array( -12=>'a', -43=>'b', 'c' ); var_dump($arr); 5.PHP5.4之后 $arr=['a','b','c']; print_r($arr); $arr=[ 3=>'a', 5=>'b', 'username'=>'king' ]; print_r($arr); 6.二维中最重要的形式是二维索引+关联的形式(数据库中查询出的记录就是这种形式) $arr=array( array( 'id'=>1, 'username'=>'king' ), array( 'id'=>2, 'username'=>'queen' ) ); ``` - 通过[]动态创建 ``` 1.动态创建下标连续的索引数组 $arr1[]=12; $arr1[]=45678.9; $arr1[]=true; print_r($arr1); 2.手动指定下标的索引数组 $arr2[3]=45; $arr2[-56]=-12; $arr2[0]='hello world'; $arr2[]='this is king show time'; print_r($arr2); 3.动态创建关联数组 $desc='this is a test'; $userInfo['username']='king'; $userInfo['age']=12; $userInfo['desc']=$desc; $userInfo[12]='aaaa'; $userInfo[]='bbb'; print_r($userInfo); 4.二维的索引+关联 $arr3[]=['id'=>1,'username'=>'king1','age'=>12]; $arr3[]=['id'=>2,'username'=>'king2','age'=>12]; $arr3[]=['id'=>3,'username'=>'king3','age'=>12]; $arr3[]=['id'=>4,'username'=>'king4','age'=>12]; print_r($arr3); 5.二维关联+关联 $arr4['course']=['courseName'=>'php','courseDesc'=>'PHP is the best language']; print_r($arr4); $arr5[][][][][]=1; print_r($arr5); ``` - 通过range和compact快速创建 ``` 1.range()快速创建下标连续的索引数组 $arr=range(1,10); print_r($arr); $arr=range(-10,5); print_r($arr); 2.手动指定步长的数组 $arr=range(1,10,2); print_r($arr);//1, 3, 5, 7, 9 3.输出a-z $arr=range('a','z');//97~122 print_r($arr); echo '
'; for($i=97;$i<=122;$i++){ $arr1[]=chr($i); } print_r($arr1); echo '
'; 4.通过compact创建数组的时候,只能写已经存在的变量的名称,不需要加$ $a=12; $b=false; $c=null; $userInfo3=compact('a','b','c'); print_r($userInfo3); ``` - 通过define()定义常量数组(PHP7) ``` 1.const在5.6之后可以定义常量 const ARR1=array('a','b','c'); print_r(ARR1); const ARR2=[ 'a'=>'aa', 'b'=>'bb' ]; print_r(ARR2); echo '
'; 2.通过define()定义常量数组 define('TEST1',array('a','b','c')); print_r(TEST1); define('TEST2',['d','e','f']); print_r(TEST2); define('CUSTOM_UPLOAD_ERRORS',[ 'ext_error'=>'上传文件扩展名不符合规范', 'maxsize_error'=>'上传文件大小不符合规范' ]); print_r(CUSTOM_UPLOAD_ERRORS); echo '
'; echo CUSTOM_UPLOAD_ERRORS['ext_error']; ``` 4.使用数组 - 原则:根据键名找键值 ``` 1.查找元素 $arr=[ 'username'=>'king', 'age'=>12, 'email'=>'382771946@qq.com' ]; echo '用户名为:',$arr['username'],'
'; 2.二维的索引+关联 echo '
'; $users[]=['id'=>1,'username'=>'king1','age'=>21]; $users[]=['id'=>2,'username'=>'king2','age'=>51]; $users[]=['id'=>3,'username'=>'king3','age'=>11]; echo $users[1]['username']; 3.向数组中添加元素 $arr=['a','b','c']; $arr[]='d';//索引3 $arr['test']='this is a test'; print_r($arr); 4.更新操作 $arr[3]='dddd'; print_r($arr); 5.删除指定元素 unset($arr['test']); print_r($arr); 6.针对于二维数组的操作:增删改查操作 $courses[]=['id'=>1,'courseName'=>'php','courseDesc'=>'PHP是最好的语言']; $courses[]=['id'=>2,'courseName'=>'javascript','courseDesc'=>'javascript是最好的语言']; $courses[]=['id'=>3,'courseName'=>'go','courseDesc'=>'go是最好的语言']; echo $courses[0]['courseName']; //更新 $courses[1]['courseName']='js'; echo $courses[1]['courseName'],'
'; //删除 unset($courses[2]['courseName']); print_r($courses); ``` 5.其他类型转数组 ``` 1.临时转换 $var = 123;//0 => int 123 $var = 12.3;//0 => float 12.3 $var = false;//0 => boolean false $var = 'fang';//0 => string 'fang' (length=4) $var = null;//转换成空数组empty $res = (array)$var; var_dump($res); 2.永久转换:settype $var = 123; settype($var,'array'); var_dump($var);//0 => int 123 ``` 6.数组运算符的使用 ``` 1.合并数组,如果数组键名相同,只会使用左边数组元素的值 $arr1=['a','b','c']; $arr2=['d','e','f']; $newArr=$arr1+$arr2; print_r($newArr);//a, b, c 2.== 比较数组的键名和键值是否相同,如果相同返回true,否则返回false === 既要比较键名和键值是否相同,而且顺序也要相同 $a=[ 3=>'a', '5'=>true ]; $b=[ 5=>1, '3'=>'a' ]; $c=[ '3'=>'a', '5'=>1 ]; var_dump($a==$b,$a===$b,$a==$c,$a===$c);//true, false, true, false ``` 2017年07月14日 星期五 ### 数组应用 1,count 计算数组中的单元数目,或对象中的属性个数,如果 array_or_countable 不是数组类型或者没有实现 Countable 接口的对象,将返回 1。 有个例外:如果 array_or_countable 是 NULL 则结果是 0。 ``` $arr = range('d', 'z'); //for循环只能遍历下标连续的索引数组 for($i=0,$count=count($arr)-1;$i<=$count;$i++){ echo $arr[$i],'
'; } ``` 2.一般我们用foreach的方式遍历数组 ``` foreach分为两种形式 只要键值的情况 foreach($数组名称 as $val){ 循环体; } 既要键名又要键值的情况 foreach($数组名称 as $key=>$val){ 循环体; } $arr=[//for无法遍历这样的数组 5=>'a', 12=>'b', -123=>'c', 34=>'d' ]; foreach ($arr as $value){ logInfo($value, false); } foreach($arr as $key=>$value){ logInfo($key, false); logInfo($value, false); } ``` 留言板 ``` file_get_contents($file);//将整个文件读入一个字符串,返回的是字符串 file_put_contents($file, $str);//向指定文件写内容,内容只能是字符串 serialize($str);//对字符串进行序列化,写入内容 unserialize();//反序列化,读取内容 isset($var);//检测变量是否设置 strip_tags($str);//从字符串中去除 HTML 和 PHP 标记 ``` 2017年7月15日 星期六 1.foreach遍历数组和对象,如果不是数组或者对象会报警告,通过@符号无法抑制错误 ``` $arr='asdfsa'; foreach($arr as $v){ echo 'this is a test'; } ``` 2017年07月17日 星期一 1.html中的所有php语法都要用包裹 ``` ``` 2017年7月24日 星期一 1.数组指针遍历数组 - key($arr)//得到当前指针所在位置的键名 - current($arr)得到当前指针所在位置的键值 2017年07月30日 星期日 1.session_start启动新会话或者重用现有会话 2. 2017年08月01日 星期二 1.react中select不能用selected指定默认选中的值,需要用value指定 2017年08月03日 星期四 1.如何使用PHP去操作MySql - 命令行方式连接数据库 1.命令行中输入mysql -uroot -p或者mysql -uroot -p+密码 2.输入密码 3.退出数据库:exit/quit,注意不要加分号 2.查看mysql版本 mysql -V 3.登录的同时打开指定的数据库: ``` mysql -uroot -p -D db_name(数据库的名称) ``` 4.一些简单的命令 select database();产看打开的数据库 命令行结束符默认使用;或者\g来结束; select version();获取mysql的版本号 select now()返回当前的时间 5.数据库相关操作 - 创建数据库:CREATE (DATABASES|SCHEMA) db_name; - 不存在再创建:CREATE DATABASE [IF_NOT_EXISTS] db_name; - 产看当前服务器下全部的数据库:SHOW DATABASE|SCHEMAS; - 查看上一步操作的警告信息 SHOW WARNINGS; - 在创建数据库的同时指定编码方式:CREATE_DATABASE[IF_NOT_EXISTS] db_name[DEFAULT] CHARACTER SET [=]charset; - 查看指定数据库的详细信息:SHOW_CREATE DATABASE db_name; - 修改指定数据库的编码方式:ALTER DATABASE db_name DEFAULT CHARACTER SET ‘UTF-8’; - 打开指定数据库USE db_name; - 得到当前打开的数据库:SELECT DATABASE()|SCHEMA(); - 删除指定的数据库: DROP DATABASE db_name; - 如果数据库存在则删除:DROP DATABASE [IF EXISTS] db_name; 6.数据表相关操作。 - 数据表是数据库最重要的组成部分,数据是保存在数据表中。每个数据表中至少有一列,行可以有零行或者多行。表名要求唯一,不要包含特殊字符,最好含义明确。 - 创建表:CREATE TABLE [IF_NOT_EXISTS] tbl_name( 字段名称 字段类型 [完整性约束条件], 字段名称 字段类型 [完整性约束条件] )ENGINE=存储引擎 CHARSET=编码方式; 7.MYSQL中的数据类型:整数类型;浮点类型;定点类型; 8.查看数据库下已有数据表:SHOW TABLES; 9查看指定数据表的详细信息:SHOW_CREATE TABLE btl_name; #### 常量 1.PHP中的常量分为两种,一种是自定义的,一种是系统的。自定义常量一般通过define()函数来定义。 2.常量主要功效是可以避免重复定义,篡改变量值 3.系统常量有: - __FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置 - __LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行 - PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析 - PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码 4.PHP常量如何取值 - 使用常量名直接获取 - 使用constant()函数。优点是可以动态的输出不同的常量,在使用上要灵活、方便,其语法格式如constant(const).例子如下,注意变量要用引号包裹起来 ``` define("PI", 3.14); $r = 1; $area = constant("PI")*$r*$r; echo $area; ``` 5.如何判定常量是否被定义 格式为:bool defined(string constants_name) #### PHP常用的运算符 1.字符串的连接符--点 ``` echo "总分:".$sum."
" ``` 2.PHP中的赋值运算符。 - 分两种,一种“=”把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。第二种“&”意味着两个变量都指向同一个数据。它将使两个变量共享一块内存 ``` $a = "我在慕课网学习"; $b = $a; $c = &$a; $a = "你以为这是真的吗"; echo $b."
";//我在慕课网学习 echo $c;//你以为这是真的吗 ``` 3.逻辑运算符 - 逻辑与and或者&&,但前者要注意优先级,使用的时候要用括号包裹 - 逻辑或or或者||,但前者要注意优先级,使用的时候要用括号包裹 - 逻辑异或xor表示只能有奇数为真才为真 - 逻辑非! 4.字符串连接运算符 - 连接运算符(“.”):它返回将右参数附加到左参数后面所得的字符串。 - 连接赋值运算符(“.=”):它将右边参数附加到左边的参数后,类似c+=b; ## 说明 如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢! ^_^ 或者您可以 "follow" 一下,我会不断开源更多的有趣的项目 ## 个人简介 作者:房飞跃 博客地址:[前端网](http://www.qdfuns.com/house/31986/note) [博客园](https://www.cnblogs.com/fangfeiyue) [GitHub](https://github.com/fangfeiyue) 职业:web前端开发工程师 爱好:探索新事物,学习新知识 座右铭:一个终身学习者 ## 联系方式 坐标:北京 QQ:294925572 微信: ![XinShiJieDeHuHuan](http://note.youdao.com/yws/public/resource/c2361265179a03449f6d52397fd50033/xmlnote/100D55934BB446839482D3EA0CDC3E8D/17820) ## 赞赏 觉得有帮助可以微信扫码支持下哦,赞赏金额不限,一分也是您对作者的鼎力支持 ![微信打赏](http://note.youdao.com/yws/public/resource/c2361265179a03449f6d52397fd50033/xmlnote/D77744C8EC944CF6AA232272CBC5CF6D/17828)