對於字符串中的指定字符作增刪改查操做php
$string='abcdef'; //查找 echo $string{0}; echo '<br/>'; //注意,修改的時候只能一個字符替換一個字符 $string{1}='z'; echo $string;//azcdef echo '<br/>'; $string{4}='!'; echo $string;//azcd!f echo '<hr/>'; $string='abc'; $string{0}='hello'; echo $string;//hbc echo '<hr/>'; //不要對於中文字符作操做 $string='你好'; var_dump($string);//'你好' (length=6) echo '<hr/>'; //刪除 不知道爲啥這部分我作了沒效果,仍是輸出原來的字符串; 若是把''改爲' ',原來的字符位置又會多出一個空格,不明白不明白?? $string='abcdef'; $string{2}=''; echo $string; //abcdef echo '<br/>'; $string{0}=''; //abcdef echo $string; //添加字符 echo '<br/>'; $string='abc'; $string{3}='d';//abcd echo $string; echo '<br/>'; $string='abc';//abc00e $string{5}='e'; echo $string;//abc e
不存在的變量返回null
銷燬變量使用unset()html
$a=$b=$c='king'; //一次銷燬3個變量 unset($a,$b,$c); var_dump($a,$b,$c);
php換行符
1.\n是使源代碼換行,而瀏覽器顯示的內容不換行(用雙引號包裹);
2.<br />是使瀏覽器顯示的內容換行,而源代碼不換行數組
臨時轉換瀏覽器
$var=true; //臨時轉換成整型 var_dump((int)$var,(integer)$var);//1 1 //臨時轉換成浮點類型 var_dump((float)$var,(double)$var,(real)$var); //臨時轉換成字符串型 $var=true; var_dump((string)$var); //臨時轉換成布爾類型 $var='3king'; var_dump((bool)$var,(boolean)$var); //臨時轉換成空 $var='hello'; var_dump((unset)$var); //臨時轉換成數組 $var=123; var_dump((array)$var); //臨時轉換成對象 $var=12.3; var_dump((object)$var);
經過系統函數完成臨時轉換php7
$var='3king'; $res=intval($var); var_dump($res);//3 var_dump(floatval($var),doubleval($var)); var_dump(boolval($var)); $var=true; var_dump(strval($var));
獲得變量的類型 gettype()
type可能的值爲:
「boolean」 (或爲「bool」,從 PHP 4.2.0 起)
「integer」 (或爲「int」,從 PHP 4.2.0 起)
「float」 (只在 PHP 4.2.0 以後可使用,對於舊版本中使用的「double」現已停用)
"string"
"array"
"object"
「null」函數
永久轉換的例子post
$var=123; echo gettype($var);//integer echo '<br/>'; //永久轉換settype($var,$type) settype($var,'bool'); var_dump($var);
經過變量函數庫檢測變量的類型,is_*this
//檢測是否爲整型 $var=0; var_dump( is_int($var), is_integer($var), is_long($var) ); //是否爲字符串型 $var='3king'; var_dump( is_string($var) ); //是不是布爾類型 $var=false; var_dump(is_bool($var)); //是否爲標量類型 $var=123; $var=null; var_dump(is_scalar($var)); //是否爲null $var=null; var_dump(is_null($var)); //是否爲數組 $var=array(); var_dump(is_array($var)); //是不是對象 $var=new StdClass(); var_dump(is_object($var)); //是不是資源 $var=fopen('./test.html','r'); var_dump(is_resource($var)); //檢測是否爲數值型或者是字符串形式的數值 //123 23.4 '123.34' '23' $var=123; var_dump(is_numeric($var));
系統常量spa
echo PHP_VERSION;//7.3.4 echo PHP_OS;//WINNT echo PHP_INT_MAX;//...很長
define(NAME,VALUE):定義常量
常量一經定義不能改變
常量默認區分大小寫,使用的時候按照定義時的大小寫來使用scala
define('TEST','this is a test'); echo TEST; define('TEST_ARRAY',array('a','b','c')); var_dump(TEST_ARRAY); const關鍵字定義常量 const TEST='this is a test'; echo TEST; //經過constant來獲取常量的值 echo constant('TEST'); //經過defined()檢測常量是否存在 var_dump(defined('TEST')); //get_defined_constants():返回的是數組,獲得全部已定義的常量,包含系統常量和自定義常量 print_r(get_defined_constants());
魔術常量
echo __LINE__; echo __FILE__; echo __DIR__;
$_REQUEST 能接收 get,post 方式傳值,它包含$_GET,$_POST,$_COOKIE 三個預約
義變量的內容,爲何在頁面上給$_GET 和$_POST 賦值之後打印$_REQUEST,裏面卻爲
空?
緣由:$_REQUEST 包含$_GET 和$_POST 的值,必須是經過 get,post 兩種方式傳過來的
數據,單獨在頁面給$_GET 和$_POST 賦值時,沒有給$_REQUEST 賦,它代替不了$_GET
和$_POST
define 定義數組常量時報錯
緣由:數組常量定義是 PHP7 新加的特性,在 7 以前的版本,常量的值僅容許標量和 null。
標量的類型是 integer, float,string 或者 boolean。因此數組是不容許的,須要將版
本升級到 7 才能定義數組常量。
整數支持遞增遞減運算符
浮點類型支持遞增遞減運算符
布爾類型不支持遞增遞減運算符
null只支持遞增運算符,不支持遞減運算符
字符串只支持遞增運算符,根據ascii碼來計算
$str='a'; echo ++$str;//b $str='a1'; echo ++$str;//a2 $str='a9'; echo ++$str;//b0 $str='B'; echo ++$str;// C
ord($character):獲得指定字符的ASCII碼值
$str='a'; echo ord($str); echo '<br/>';//98
chr($ascii):根據指定ASCII獲得對應的字符
echo chr(98);//b
字符鏈接符
echo 'a'.'b'.'c';//abc echo 'a','b','c';//abc $str1=' hello '; $str2=' world '; $newStr=$str1,$str2;//報錯 $newStr=$str1.$str2;// hello world echo $newStr;
mt_rand($min,$max):產生隨機數
echo mt_rand(1,9); echo mt_rand(1000,9999);
生成四位數的多色驗證碼
$code='<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.mt_rand(1,9).'</span>'; $code.='<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.mt_rand(1,9).'</span>'; $code.='<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.mt_rand(1,9).'</span>'; $code.='<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.mt_rand(1,9).'</span>'; echo $code;
比較結合運算符(太空船運算符)
前面>後面 1
前面<後面 -1
前面=後面 0
var_dump( 1.5<=>1.5, 1.5<=>1.2, 1.5<=>4.6 ); var_dump( 'a'<=>'a', 'c'<=>'a', 'c'<=>'e' );
NULL合併操做符
從左到右第一個存在且不爲null的操做
若是所有都是null,就返回null
php7以後開始有
var_dump( true??'king'??123, 0??false??null??'hello world', $abcdef??'hello world' );
字符串搜索相關
strpos($string,$search):返回字符串首次出現的位置,位置從0開始;若是沒找到返回false
stripos($string,$search):忽略大小的去搜索
strrpos($string,$search):返回字符串最後一次出現的位置;若是沒找到返回false
strripos($string,$search):忽略大小寫的去搜索最後一次出現的位置
$str='abcadebf'; var_dump(strpos($str,'bc')); //1 var_dump(stripos($str,'B'));//1 var_dump(strrpos($str,'a'));//3 var_dump(strripos($str,'A'));//3
錯誤抑制符@
$var=123; @settype($var,'king');
三元運算符至關於縮寫的if...else
exp1?:exp3
$res=0?:'this is a test'; var_dump($res);
max() min()
echo max(123,234,35234234);//獲得最大值 echo min(-123,23,5346);//獲得最小值
date($format,$time):格式化日期時間
Y:4位的年份
m:2位月份
d:2位的日
H:2位的小時
i:2位的分鐘
s:2位秒數
w:返回一週內的第幾天,0~6(0表明星期日)
date_default_timezone_set($timezone):設置時區
date_default_timezone_get():獲得當前默認的時區
time():獲得當前的時間戳
date_default_timezone_set('PRC');//Asia/Shanghai echo date("Y年m月d日 H:i:s");//2020年01月09日 15:29:18 echo date("Y-m-d H:i:s",time());//2020-01-09 15:29:18 echo date("Y/m/d",time());//2020/01/09 echo date_default_timezone_get();//PRC
if語句的另外的形式
if(true){ }else{ } if(true): else: endif; ----------------------------- if(true){ }else if($username=='queen'){ }else { } if(true): elseif(true): else: endif;
exit($msg)|die($msg)程序終止執行
exit; die; exit("<h1>Game Over ...</h1>");
for循環
for($i=1;$i<=3;++$i){ echo $i; echo "\n"; } echo $i,"\n";//4 for($j=4;$j<=0;$j++){ echo 'this is a test<br/>'; } echo $j,"\n";//沒有循環,初始值4 //生成四位數多色驗證碼 for($i=0;$i<4;$i++){ echo '<span style="color:rgb('.mt_rand(0,255).','.mt_rand(0,255).','.mt_rand(0,255).')">'.mt_rand(0,9).'</span>'; }
goto跳轉
echo 'starting...'; goto TEST; echo 'this is a test';//不顯示,被跳過 TEST://TEST標識符 echo '跳入TEST'; //goto 不能跳入循環、switch...case 函數和類 //goto TEST1;//報錯 for($i=1;$i<=5;$i++){ TEST1: echo '跳入循環TEST1'; } for($i=1;$i<=5;$i++){ if($i==3){ goto TEST2; } } TEST2: echo '跳出循環TEST2';