PHP基礎語法

對於字符串中的指定字符作增刪改查操做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';
相關文章
相關標籤/搜索