PHP基礎語法

php基礎

變量

變量是用於存儲值的,通常狀況下一個變量只能裝一個值,能夠將變量想象是一個瓶子,值就是瓶子裏面的水javascript

  • 定義變量的方式:php中沒有定義變量的關鍵字,可是在定義變量的時候變量名必須是$(美圓符)開頭,如:
<?php

$name = "alex"; // 定義一個變量
echo $name //輸出
?>
  • php變量命名規則:
    • 變量名必須以字母或者下劃線"_"開頭
    • 變量名只能➡由字母,數字,以及"_"組成,也能夠包含漢字,可是不建議使用漢字做爲變量名
    • 變量名不容許包含空格,變量名包含多個單詞組成,可使用下劃線法或者駱駝式命名法
    • 在php中變量名是明確區分大小寫的
  • 變量的數據類型

在變量中,因爲變量佔用的空間單元不同,也分紅幾種數據類型,可使用"memory_get_usage"函數獲取當前消耗的內存php

<?php
// 獲取當前消耗的內存
$c1 = memory_get_usage();
$name = 'alex';
$c2 = memory_get_usage() - $c1;
echo '變量name所佔用的內存空間:'.$c2
?>

php是一個弱類型語言,在定義時不須要聲明變量的類型,php會自動吧變量轉換成自動的數據類型java

<?php 
 $string = "就是就是";
 var_dump($string);  //使用var_dump查看變量的數據類型
 echo "<br />";
 $string = 9494; //自動將$string變量轉換成int類型
 var_dump($string);
  echo "<br />";
?>

php標量類型:

字符串

  1. php中的字符串是用雙引號括起來的一個詞或者一個句子,好比"hello world",可使用php語言輸出echo 將字符串輸出
<?php
// 定義一個$name變量
$name = 'alex';
// 輸出$name變量
echo $name
?>
  1. php鏈接字符串的方式

在php中使用 . 鏈接兩個字符串,與python或者javascript中使用+鏈接字符串不同python

<?php
// 定義變量
$name = 'alex';
$age = '20歲';

// 使用 . 鏈接字符串輸出
echo '名字:'.$name.'年齡:'.$age

// output: 名字:alex年齡:20歲
?>
  1. php語句結束符號:每一條php代碼航結尾處都會有一個分號;結束,而且分號;必定在半角狀態下輸入,不然會報錯
  2. php的註釋是雙斜槓://
  3. 當引號趕上美圓符號:
<?php
// 定義變量
$name = 'alex';
// 當引號趕上美圓符號
echo '名字:$name';  //輸出的是$name
echo "名字:$name"   //字符串格式化輸出

?>

// output:
    名字:$name
    名字:alex
  1. 多行字符串

在賦值符號後,輸入界定福"<<<",接着就是標識符(代碼中的EOF)mysql

//多行字符串
$content = <<<EOF
我有一隻小毛驢,我歷來也不騎。
有一天我心血來潮,騎着去趕集。
我手裏拿着小皮鞭,我內心正得意。
不知怎麼嘩啦啦啦啦,我摔了一身泥.
EOF;
echo $content;
?>

bool類型

布爾類型(boolean):只有兩個值,一個是TRUE另外一個是FALSE,bool不區分大小寫,主要是用在條件結構sql

<?php
$man = '男';
$flag = $man == '男';
echo $flag;
var_dump($flag)

?>

整形

整形(integet):相似於常見的證書,能夠用十進制,八進制,十六進制指定,十進制就是平常使用的水,八進制數字前必須加上"0",十六進制數字前必須加"0x"數據庫

<?php
$data_int = 1234;   // 十進制數 
$data_int = -567;    // 一個負數
$data_int = 0123;    // 八進制數(等於十進制的 83)
$data_int = 0x1a;    // 十六進制數(等於十進制的 26)
?>

浮點型

浮點型(浮點數,雙精度數或實數),也就是一般說的消暑,能夠用小數點或者科學計數法表示,科學計數法可使用小寫的e,也可使用大寫的E數組

<?php
$num_float = 1.234;    //小數點  
$num_float = 1.2e3;    //科學計數法,小寫e  
$num_float = 7.0E-10;     //科學計數法,大寫E  
?>

php第一種特殊類型--資源

資源(resource):資源是由專門的函數來創建和使用的,例如打開文件、數據鏈接、圖形畫布。任何資源,在不須要的時候應該被及時釋放。若是咱們忘記了釋放資源,系統自動啓用垃圾回收機制,在頁面執行完畢後回收資源,以免內存被消耗殆盡服務器

例如:函數

<?php
$f = fopen('./content.txt','r'); //打開文件,第一個參數是文件名,第二個參數是打開類型
$conn = mysqli_connect('host','root','密碼','數據庫名');//數據庫鏈接
$img = imagecreate(100,100)  //畫布

?>

文件的簡單操做:

<?php
$f = fopen('./content.txt','r'); //打開文件,第一個參數是文件名,第二個參數是打開類型
if ($f){ //判斷f文件資源是否存在
    //接着採用while循環(後面語言結構語句中的循環結構會詳細介紹)一行行地讀取文件,而後輸出每行的文字
    while (!feof($f)){  //判斷是否到最後一行
        $line = fgets($f); // 輸出一行文本
        echo $line;
    }
}
?>

空類型

NULL(空):NULL是空類型,對大小寫不敏感,null類型只有一個取值,表示一個變量沒有值,當被賦值爲null或者還沒有被賦值,或者被unset(),這三種狀況下被認爲爲null

<?php 
 error_reporting(0); //禁止顯示PHP警告提示
 $var;
 var_dump($var);
 $var1 = null;
 var_dump($var1);
 $var2 = NULL;
 var_dump( $var2);
 $var3 = "節日快樂!";
 unset($var3);
 var_dump($var3);
// 輸出的都是null
?>

自定義常量

常量是不變的量,在常量被定義後,在腳本的任意位置都不能夠被改變,PHP中的常量分爲自定義常量和系統常量

PHP自定義常量是根據咱們開發的須要而定義的常量,可使用PHP中的函數define()定義

define()函數的語法:

bool define(string $constant_name, mixed $value[, $case_sensitive = true])


<!--第一個參數「constant_name」爲必選參數,常量名稱,即標誌符,常量的命名規則與變量的一致,可是要注意哦,它可不帶美圓符號哦。第二個參數「value」爲必選參數,它是常量的值。第三個參數「case_sensitive」爲可選參數,指定是否大小寫敏感,設定爲true表示不敏感,通常不指定第三個參數的狀況下,默認第三個參數的值爲false。-->

string表示參數類型爲字符串類型,mixed表示參數類型能夠接受爲多種不一樣的類型

例:

<?php
$p = "PII";
define('PI',3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
?>

在使用常量的時候能夠直接調用define()函數的第一個參數中的字符串調用,可是不能夠進行更改.

PHP常量取值的第二種方式:constant(),使用這種方式更加的靈活

例1:

<?php
$name = 'alex';
define("NAME",$name);
echo NAME;

define("AGE",10);
echo AGE; // 第一種取值方式

echo constant("NAME")  //第二種取值方式
?>

例2:

<?php 
$p="";
//定義圓周率的兩種取值
define("PI1",3.14);
define("PI2",3.142);
//定義值的精度
$height = "中";
//根據精度返回常量名,將常量變成了一個可變的常量
if($height == "中"){
    $p = "PI1";
}else if($height == "低"){
    $p = "PI2";
}
$r=1;
$area = constant($p)*$r*$r;
echo $area;
?>

使用defined(strinf constants_name)函數能夠幫助咱們判斷一個常量是否已經被定義,這個函數若是隻有一個參數constant_name指的是要獲取常量的名稱,若存在則返回布爾類型true,不然返回false

<?php 
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
?>

系統常量

系統常量是php已經定義好的常量,能夠直接拿來使用過,經常使用的系統常量:

  1. FILE :php程序文件名,能夠幫助獲取當前文件在服務器的物理位置
  2. LINE:PHP程序文件行數,可使用該常量獲取當前代碼在第幾行
  3. PHP_VERSION:當前解析起的版本好
  4. PHP_OS:執行當前PHP版本的操做系統名稱
<?php
echo __FILE__;
echo PHP_OS;
echo __LINE__;
echo PHP_VERSION;

?>

運算符

PHP運算符通常分爲算數運算符,賦值運算符,比較運算符,三元運算符,邏輯運算符,字符串鏈接運算符,錯誤控制運算符

算數運算符

算數運算符只要是用於進行算數運算的,算術運算符與其餘語言的運算符基本同樣,不作筆記了

  1. 加法 ------ (+)
  2. 減法 ------ (-)
  3. 乘法 ------ (*)
  4. 除法 ------ (/)
  5. 取模 ------ (%)
<?php 
$english = 110; //英語成績
$math= 118; //數學成績
$biological = 80; //生物成績
$physical = 90; //物理成績
$sum = $english + $math + $biological + $physical;
$avg = $sum / 4;
$x = $math - $english;
$x2 = $english * $english;

echo "總分:".$sum."<br />";
echo "平均分:".$avg."<br />";
echo "數學比英語高的分數:".$x."<br />";
echo "英語成績的平方:".$x2."<br />";

賦值運算

  1. "=" :吧右邊表達式的值賦值給左邊的運算符,它會將右邊表達式的值複製一份,交給左邊的運算符
  2. "&" :引用賦值,意味着兩個變量都指向了同一個數據,將兩個變量共享一塊內存,若是這個內存存儲的數據變了,那麼兩個變量的值都會發生變化

例:

<?php
$a = "alex";
$b = $a."大傻逼";
$c = &$a;
$a = "alex不是大傻逼";

echo $a; // alex不是大傻逼
echo $b; // alex大傻逼
echo $c;// alex不是大傻逼

?>

比較運算

比較運算符返回都是bool類型

比較運算符 名稱
== 等於
=== 全等
!= 不等
<> 不等
!== 非全等
< 小於
> 大於
<= 小於等於
>= 大於等於

例:

<?php
    $a = 1;
    $b = "1";
    var_dump($a == $b);
    echo "<br />";
    var_dump($a === $b);
    echo "<br />";
    var_dump($a != $b);
    echo "<br />";
    var_dump($a <> $b);
    echo "<br />";
    var_dump($a !== $b);
    echo "<br />";
    var_dump($a < $b);
    echo "<br />";
    $c = 5;
    var_dump($a < $c);
    echo "<br />";
    var_dump($a > $c);
    echo "<br />";
    var_dump($a <= $c);
    echo "<br />";
    var_dump($a >= $c);
    echo "<br />";
    var_dump($a >= $b);
    echo "<br />";

?>

三元運算符

(?:)三元運算符也是一個比較運算符

$num = 60;
$b  = $num <= 60 ? "及格" : "不及格"; // 若是判斷成功取?後面的不然取:後面的
echo $b

邏輯運算符

邏輯運算符朱勇是進行邏輯運算的,例如:邏輯與,邏輯或,邏輯異或,邏輯非等

例子 名稱
$a and $b And(邏輯與)
$a or $b Or(邏輯或)
$a xor $b Xor(邏輯異或)
!$a Not(邏輯非)
$a && $b And(邏輯與)
$a || $b Or(邏輯或)
<?php 
    $a = TRUE; //A贊成
    $b = TRUE; //B贊成
    $c = FALSE; //C反對
    $d = FALSE; //D反對
    //咱順便複習下三元運算符
    echo ($a and $b)?"經過":"不經過";
    echo "<br />";
    echo ($a or $c)?"經過":"不經過";
    echo "<br />";
    echo ($a xor $c xor $d)?"經過":"不經過";
    echo "<br />";
    echo !$c?"經過":"不經過";
    echo "<br />";
    echo $a && $d?"經過":"不經過";
    echo "<br />";
    echo $b || $c || $d ?"經過":"不經過";
    
?>

字符串鏈接符

PHP中有兩個方式能夠將字符串鏈接起來,第一種是(.),第二種是(.=)

<?php
$a = "alex";
$tip = $a.",歡迎您在慕課網學習PHP!";

$b = "東邊日出西邊雨";
$b .= ",道是無晴卻有晴"; //$b = $b.",道是無晴卻有晴";
$b .= $a; // $b = $b.$a

$c = "東邊日出西邊雨";
$c = $c.",道是無晴卻有晴";
echo  $tip."<br />";
echo  $b."<br />";
echo  $c."<br />";
?>

錯誤控制運算符

PHP中提供了一個錯誤控制運算符"@",對於一些可能會在運行過程當中出錯的表達式,能夠將@防止在一個PHP表達式以前,該表達式可能產生的任何錯誤信息都會被忽略

<?php
$conn = @mysqli_connect("localhost","username","password");
echo "出錯了,錯誤緣由是:".$php_errormsg;

?>

邏輯控制

if...else...

語法:

<?php
if(條件){
    // .....
}else{
    // .....
}
?>

例:

<?php
efault_timezone_set('Asia/ShangHai'); //設置時區
$today = date('m-d',time());  //獲取當前日期
$brithday = '04-20';
$money = 238;
$discount = 0.8;

if ($today == $brithday){
    $sum = $money * $discount;
    echo "生日快樂,共消費:".$sum;
}else{
    echo "共消費:".$money;
}

?>

if ... else if ...

語法:

if (條件1){
    // ...
}else if(條件2){
    // ...
}else{
    // ...
}

例:

<?php
    $totalMoney = 0;//總工資
    $basicMoney =  2000;//基本工資
    $sex = "男";

    if($sex == "男"){    
        $totalMoney = $basicMoney  + 0;// 男的沒獎金
    }else if($sex == "女")
        $totalMoney = $basicMoney  + 300;// 女的有獎金300元
    }
    echo $totalMoney;
?>

條件結構之switch ..case ...

語法:

<php?
switch(條件)
{
    case 條件值1:
        break
    case 條件值2:
        break
    default:
        //默認任務
}
?>

例:模擬抽獎

<?php

$num = rand(1,50);
switch ($num){
    case 1:
        echo "一等獎";
        break;
    case 2:
        echo "二等獎";
        break;
    default:
       echo "你抽中的是$num - "."很遺憾你沒有中獎!";
}
?>

switch中break的做用是阻止代碼進入下一個case中繼續執行。

while循環語句

語法:

<php?
while(條件){
    // ...
}
?>

例:100之內能被2整除的數相加

<?php
$num = 1;
$sum = 0;
while ($num < 100){

   if ($num%2 === 0){
        $sum += $num;
   }
   $num +=1;
}
print $sum;
echo "循環結束";

do while循環語句

語法:

<php?
do{
    //執行任務
}while(條件)

?>

首先執行任務,執行任務完畢,判斷某個條件是否符合(條件返回值是否爲TRUE),若符合則再次執行任務,執行完畢任務,繼續斷定條件。

例:

<?php

$i = 0;

do{
    $i ++;
    echo "這是第($i)圈";
}while($i < 5);

while與do...whild語句的區別:while在判斷條件的時候,若是條件爲false,一次也不會執行,do...while會執行一個do結構體中的語句,再進行判斷是否須要繼續執行下去

<?php
    //A例子
    $num = 2;
    $sum  = 10; 
    while($num<3){
        $sum = $sum  + 10;
    }
    echo "A例子的結果:".$sum."<br />";
    //B例子
    $num = 2;
    $sum  = 10;         
    do{
        $sum = $sum  + 10;
    }while($num<3);
    echo "B例子的結果:".$sum."<br />";
?>

例2:

<?php
/**
 * Created by PhpStorm.
 * User: wualin
 * Date: 2019-04-20
 * Time: 21:09
 */
//例如開發一個擲骰子大富豪遊戲,若是擲到6能夠再擲一次,若是不是留則跳出可使用do_while來實現

// 使用while實現
$sum = 0;
$num = rand(1,6);
$sum = $sum+$num;
while ($num == 6){
    $num = rand(1,6);
    $sum = $sum+$num;
}
echo "while例子執行完畢,前進:$sum";

//使用do...while實現
$sum = 0;
do {
    $num = rand(5, 6);
    $sum += $num;

}while($num == 6);
echo "do...while例子執行完畢,前進:$sum";

for循環

語法:

<?php
for(初始化;循環條件;遞增項){
    // ...
}
?>

例:求100之內能被2整除的數

<?php
$sum = 0;
for ($num=0;$num<100;$num++){
    if ($num %2 === 0){
        $sum += $num;
    }
}
echo $sum;

foreach循環

在php中的foreach循環語句,經常使用於遍歷數組

語法:

<?php
foreach(數組 as 值){
    // ...
}

foreach(數組 as 下標(索引) => 值){
    // ...
}
?>

例:遍歷數組

<?php
$students = array(
'2010'=>'令狐沖',
'2011'=>'林平之',
'2012'=>'曲洋',
'2013'=>'任盈盈',
'2014'=>'向問天',
'2015'=>'任我行',
'2016'=>'沖虛',
'2017'=>'方正',
'2018'=>'嶽不羣',
'2019'=>'甯中則',
);//10個學生的學號和姓名,用數組存儲

//使用循環結構遍歷數組,獲取學號和姓名  
foreach($students as  $v)
{ 
    echo $v;//輸出(打印)姓名
    echo "<br />";
}
?>

使用foreach遍歷二維數組

<?php
 $students = array(
'2010'=>array('令狐沖',"59"),
'2011'=>array('林平之',"44"),
'2012'=>array('曲洋',"89"),
'2013'=>array('任盈盈',"92"),
'2014'=>array('向問天',"93"),
'2015'=>array('任我行',"87"),
'2016'=>array('沖虛',"58"),
'2017'=>array('方正',"74"),
'2018'=>array('嶽不羣',"91"),
'2019'=>array('甯中則',"90"),
);//10個學生的學號、姓名、分數,用數組存儲
 
foreach($students as $key => $val)
{ //使用循環結構遍歷數組,獲取學號 
     echo $key; //輸出學號
     echo ":";
     //循環輸出姓名和分數
     foreach($val as $v)
    {
        echo $v; 
     }
     echo "<br />";
}
?>
相關文章
相關標籤/搜索