變量是用於存儲值的,通常狀況下一個變量只能裝一個值,能夠將變量想象是一個瓶子,值就是瓶子裏面的水javascript
<?php $name = "alex"; // 定義一個變量 echo $name //輸出 ?>
在變量中,因爲變量佔用的空間單元不同,也分紅幾種數據類型,可使用"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 // 定義一個$name變量 $name = 'alex'; // 輸出$name變量 echo $name ?>
在php中使用 . 鏈接兩個字符串,與python或者javascript中使用+鏈接字符串不同python
<?php // 定義變量 $name = 'alex'; $age = '20歲'; // 使用 . 鏈接字符串輸出 echo '名字:'.$name.'年齡:'.$age // output: 名字:alex年齡:20歲 ?>
<?php // 定義變量 $name = 'alex'; // 當引號趕上美圓符號 echo '名字:$name'; //輸出的是$name echo "名字:$name" //字符串格式化輸出 ?> // output: 名字:$name 名字:alex
在賦值符號後,輸入界定福"<<<",接着就是標識符(代碼中的EOF)mysql
//多行字符串 $content = <<<EOF 我有一隻小毛驢,我歷來也不騎。 有一天我心血來潮,騎着去趕集。 我手裏拿着小皮鞭,我內心正得意。 不知怎麼嘩啦啦啦啦,我摔了一身泥. EOF; echo $content; ?>
布爾類型(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 ?>
資源(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已經定義好的常量,能夠直接拿來使用過,經常使用的系統常量:
<?php echo __FILE__; echo PHP_OS; echo __LINE__; echo PHP_VERSION; ?>
PHP運算符通常分爲算數運算符,賦值運算符,比較運算符,三元運算符,邏輯運算符,字符串鏈接運算符,錯誤控制運算符
算數運算符只要是用於進行算數運算的,算術運算符與其餘語言的運算符基本同樣,不作筆記了
<?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 />";
例:
<?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; ?>
語法:
<?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 (條件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; ?>
語法:
<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中繼續執行。
語法:
<php? while(條件){ // ... } ?>
例:100之內能被2整除的數相加
<?php $num = 1; $sum = 0; while ($num < 100){ if ($num%2 === 0){ $sum += $num; } $num +=1; } print $sum; echo "循環結束";
語法:
<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";
語法:
<?php for(初始化;循環條件;遞增項){ // ... } ?>
例:求100之內能被2整除的數
<?php $sum = 0; for ($num=0;$num<100;$num++){ if ($num %2 === 0){ $sum += $num; } } echo $sum;
在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 />"; } ?>