PHP全棧學習筆記2

来源:https://www.cnblogs.com/dashucoding/archive/2019/04/17/10721177.html
-Advertisement-
Play Games

php概述 什麼是php,PHP語言的優勢,PHP5的新特性,PHP的發展趨勢,PHP的應用領域。 PHP是超文本預處理器,是一種伺服器端,跨平臺,HTML嵌入式的腳本語言,具有c語言,Java語言,和Perl語言的特點,是一種被廣泛應用的開源式的多用途腳本語言,適合web開發。 PHP是b/s體系 ...


PHP全棧學習筆記2

php概述

什麼是php,PHP語言的優勢,PHP5的新特性,PHP的發展趨勢,PHP的應用領域。

PHP是超文本預處理器,是一種伺服器端,跨平臺,HTML嵌入式的腳本語言,具有c語言,Java語言,和Perl語言的特點,是一種被廣泛應用的開源式的多用途腳本語言,適合web開發。

PHP是b/s體繫結構,屬於三層結構,PHP的好處,開發源代碼軟體,安全性高,跨平臺特性,支持廣泛的資料庫,易學性,執行速度快,免費,模板化,支持面向對象與過程,內嵌zend加速引擎。

PHP5的新特性,構造函數和析構函數,對象的引用,克隆,私有等,介面,抽象類,_call,_set,_get,靜態成員。

PHP應用,中小型網站的開發,web管理系統,企業級應用開發,多媒體系統開發等。

PHP的擴展庫,內置標準擴展庫,PHP5,spl,sqlite,dom,mysql等,需要在php.ini文件來完成。

php.ini找.dll,所有擴展庫。

學習語言的方法,明確自己的學習目標和方向,扎實的基礎,多實踐,多思考,多請教等。

創建網站,明確網站主題,收集材料,規劃網站,製作網站,上傳,宣傳,維護。

PHP開發工具,dreamweaver,zendstudio,editplus2等。

image.png

使用appserv組合包,完成apache+mysql+php+phpmyadmin的安裝與配置。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>第一個PHP程式</title>
</head>
<body>
<?php
    echo "Hello World!!!";
?>
</body>
</html>

php的標記風格,註解分類,數據類型,常量,變數,運算符,表達式,函數,編碼規範

xml風格:
<?php
 echo "dashucoding";
?>

腳本風格:
<script language="php">
 echo "dashucoding";
</script>

簡短風格:
<?
 echo 'dashucoding';
?>

asp風格:
<%
 echo 'dashucoding';
%>

共4種
註解
// 單行註解
/**/ 多行註解
# shell風格的註解

php數據類型:標量數據類型,複合數據類型,特殊數據類型,轉換數據類型。

8種原始類型,分4中標量類型,boolean布爾型,integer整型,float/double浮點型,string字元串型;兩種複合類型,arrray數組,object對象;兩種特殊類型,resource資源,null。

標量數據類型是數據結構中最基本的單元,只能存儲一個數據,PHP標量數據類型有4種。

單引號和雙引號,雙引號可以將變數自動替換成實際數值,而引號將變數按照普通字元串輸出。

定義字元串的三種方式:單引號,雙引號,界定符。

轉義字元

\n 換行
\r 回車
\t 水平製表符
\\ 反斜杠
\$ 美元符號
\' 單引號
\'' 雙引號
界定符格式:
$string = <<< str
輸出字元串
str;

<?php
 echo <<< str
  字元串
 str;
?>
界定符中結束標識符必須要單獨另起一行,並不可以用空格。

複合數據類型有 兩種,一種為 數組,一種為 對象。

$array = ('value1','value2',...);

$array[key] = 'value';

$array = array(key1 => value1, key2 => value2 ...);

特殊數據類型包含 資源 和 空值 兩種。

資源是一種特殊的變數,可叫句柄,保存在外資源的一個引用,通過專門的函數來建立和使用,null為特殊的值,表示變數沒有值。

使用資源類型時,系統會自動啟動垃圾回收機制,釋放不再使用的資源。

空值出現的情況,還沒有賦值,被賦值為null,被unset()函數處理過的變數。

轉換數據類型

boolean 轉換布爾型
null,0,和未賦值或數組為false,false為0,true為1
string 轉換字元型
integer 轉換整型
float 轉換浮點型
array 轉換數組
object 轉換對象

settype()用於類型轉換,將指定的變數轉換為指定的數據類型

bool settype(mixed var, string type)
第一個參數為指定的變數,第二個參數為指定的類型,參數type為boolean,float,integer,array,object,null,string。

使用integer操作符能夠可以直接輸出轉換後的變數類型,使用settype()返回的是boolean類型。第一種原變數不會發生變化,第二種原變數被改變了。

檢測數據類型

is_bool檢測變數是否是布爾類型
is_string檢測變數是否是字元串類型
is_float/is_double 檢測變數是否為浮點類型
is_null 檢測變數是否為整數
is_array 檢測變數是否為數組
is_object 檢測變數是對象類型
is_numeric 檢測變數是否為數字
is_integer/is_int 檢測變數是否為整數

php常量,聲明和使用常量,預定義常量

常量是不可變的值,被定義後,不管怎樣都不會被改變。

使用define()函數來定義常量

define(string constant_name, mixed value, case_sensitive = true)
函數定義一個常量

常量名稱, 常量值, 指定是否大小寫敏感

mixed constant(string const_name);
函數動態獲取常量的值,常量名直接獲取,另一種為constant()

判斷一個常量是否被定義:
bool defined(string constant_name);

預定義常量

__FILE__ 文件名
__LINE__ 程式員行數
PHP_VERSION 程式的版本
PHP_OS 操作系統名稱
TRUE FALSE NULL
E_ERROR E_WARNING E_PARSE E_NOTICE

php變數,聲明和使用變數,變數的作用域,可變變數,預定義變數

變數是在程式執行過程中數值中可以變化的量

php預定義變數

預定義變數可以獲取用戶會話,用戶操作系統等信息。

$_SERVER['SERVER_ADDR'] 當前腳本所在的伺服器的ip地址
$_SERVER['SERVER_NAME'] 伺服器主機名
$_SERVER['REQUEST_METHOD'] 訪問頁面時的請求方法
$_SERVER['REMOTE_ADDR'] 正在瀏覽當前頁面用戶的IP地址
$_SERVER['REMOTE_HOST'] 正在瀏覽當前頁面用戶的主機名
$_SERVER['REMOTE_PORT'] 伺服器使用的埠
$_SERVER['SCRIPT_FILENAME'] 當前執行腳本的絕對路徑名
$_SERVER['SERVER_PORT'] 伺服器所使用的埠
$_SERVER['SERVER_SIGNATURE'] 伺服器版本和虛擬主機名的字元串 
$_SERVER['DOCUMENT_ROOT'] 當前運行腳本所在的文檔根目錄
$_COOKIE 通過HTTPCookie傳遞到腳本的信息
$_SESSION 包含與所有會話變數有關的信息
$GLOBALS 已定義全局變數組成的數組
$_POST 通過POST方法傳遞的參數的相關信息
$_GET 通過GET方法傳遞的參數的相關信息

php運算符

算術運算符,字元串運算符,賦值運算符,位運算符,邏輯運算符,比較運算符,錯誤控制運算符,三元運算符,優先順序。

image.png

image.png

image.png

image.png

image.png

錯誤控制運算符

@用於對錯誤信息進行屏蔽而已

<?php
  $err = @(3/0);
?>

三元運算符-三目運算符

<?php
$value=10;
echo ($value == true)? dashu : dashucoding;
?>

image.png

php函數,定義和調用函數,函數間的傳遞參數,函數中返回值,變數函數,對函數的引用,取消引用。

定義和調用函數,將功能寫在代碼塊中:

function name($str1,...){
}

函數傳參,被傳入的參數為實參,定義的參數為形參。
參數傳遞有三種:

  1. 按照值傳遞
  2. 按照引用傳遞
  3. 預設參數
<?php
function add($m){
 $m = $m+1;
 echo "體內".$m;
}
$m=1;
add($m);
echo "體外".$m;
?>

結果, 函數內:$m為2,體外為1

傳引用 使用&
<?php
function add(&$m){
 $m = $m+1;
 echo "體內".$m;
}
$m=1;
add($m);
echo "體外".$m;
?>

從函數中返回值return()。

變數函數,對函數的引用,取消引用。

<?php
function &add($a=0){
 return $a;
}
$str = &add('dashucoding');
echo $str;
?>

unset()函數取消引用,用於斷開變數名和變數內容之間的綁定,而不是銷毀變數的內容。

什麼是PHP編碼規範,書寫規則和命名規則

image.png

PHP的數據類型,常量,變數,運算符,表達式,自定義函數,數據類型之間的轉換,系統預定義常量,變數,運算符的優先順序等。

流程式控制制語句

if語句,if...else語句,elseif語句,switch...case語句

image.png

image.png

image.png

image.png

while迴圈,do...while迴圈,for迴圈,foreach迴圈,break/continue語句等。

break/continue語句,break關鍵字終止當前的迴圈,跳出多重迴圈,break $num; continue只是終止本次迴圈。

foreach($arr as $key => $value){
 echo $key.'=>';
 foreach($value as $va){
  echo ' " '.$va.' " ';
 }
 echo '<br>';
}

字元串,單引號,雙引號,字元串連接符,字元串操作

字元串是由零個或多個字元組成的一個集合

單引號和雙引號的區別,單引號中的內容是只能被作為普通字元串處理,雙引號的作用可以被解釋。sql查詢時,所有字元串都必須是單引號。

字元串操作:

image.png

trim()函數去除字元串左右兩邊的空格和特殊字元
ltrim()去除左邊的空格和特殊字元
rtrim()去除右邊的空格和特殊字元

string trim(string str [,string charlist]);

string ltrim( string str [,string charlist]);

String rtrim(string str [,string charlist]);

image.png

字元串的三種定義方法:

  1. 單引號
  2. 雙引號
  3. 界定符
//轉義、還原字元串數據
addslashes()函數
string addslashes (string str)

stripslashes()函數
string stripslashes(string str);

addcslashes()函數
string addcslashes (string str, string charlist)

stripcslashes()函數
string stripcslashes (string str)

int strlen(string str)
獲取指定字元串str的長度

string substr ( string str, int start [, int length])
截取字元串

比較字元串
strcmp()函數按照位元組進行比較
strcmp()和strcasecmp()
int strcmp ( string str1, string str2)

strnatcmp()函數按照自然排序法進行比較
int strnatcmp ( string str1, string str2)

strncmp()函數指定從源字元串的位置開始比較
int strncmp(string str1,string str2,int len)

查找字元串strstr()函數

string strstr(string haystack, string needle)
// strstr()函數獲取上傳圖片的尾碼
<form method="post" action="index.php" enctype="multipart/form-data">
 <input type="hidden" name="action" value="upload"/>
 <input type="file" name="u_file"/>
 <input type="submit" value="上傳"/>
</form>
<?php
 if($_POST[action] == "upload") {
  $file_path="./uploads\\";
  $picture_name=$_FILES[u_file][name];
  $picture_name=strstr($picture_name,".");
  if($picture_name != ".jpg"){
   echo"<script>alert();window.location.href="index.php";</script>";
  }elseif($_FILES[u_file][tmp_name]{
   move_uploaded_file();
  }else
   echo"";
  }
 }
?>
<body>
<center>
<label>請選擇要上傳的圖片(圖片格式為.jpg):</label>
<form method="post" action="index.php" enctype="multipart/form-data">
    <input type="hidden" name="action" value="upload" />
    <input type="file" name="u_file"/>
    <input type="submit" value="上傳" />
</form>
<?php
    if($_POST[action] == "upload"){         //判斷提交按鈕是否為空
        $file_path = "./uploads\\";         //定義圖片在伺服器中的存儲位置
        $picture_name=$_FILES[u_file][name];    //獲取上傳圖片的名稱
        $picture_name=strstr($picture_name , ".");  //通過strstr()函數截取上傳圖片的尾碼
        if($picture_name!= ".jpg"){                 //根據尾碼判斷上傳圖片的格式是否符合要求
            echo "<script>alert('上傳圖片格式不正確,請重新上傳'); window.location.href='index.php';</script>";
        }else if($_FILES[u_file][tmp_name]){
            move_uploaded_file($_FILES[u_file][tmp_name],$file_path.$_FILES[u_file][name]);     //執行圖片上傳
            echo "圖片上傳成功!";
        }
        else
            echo "上傳圖片失敗";
        }
?>
</center>
</body>

substr_count()函數檢索字元串出現的次數

int substr_count(string haystack, string needle)

<?php
$str="";
echo substr_count($str,"");
?>

替換字元串

str_ireplace()函數使用新的字元串替換原始字元串中被指定要替換的字元串。
mixed str_ireplace(mixed search,mixed replace, mixed subject[,int &count])

substr_replace()函數
對指定字元串中的部分字元串進行替換

格式化字元串
string number_format(float number,[int 
num_decimal_places],[string dec_seperator],string 
thousands_ seperator)

分割字元串
array explode(string separator,string str,[int limit])

合成字元串
string implode(string glue, array pieces)
<body>
<?php
$str="\r\r(:@_@   dashu   @_@:)      ";
echo trim($str);
echo "<br>";
echo trim($str,"\r\r(: :)");
?>
</body>
<?php
$content = "北京,上海,天津,重慶,河北,山西,遼寧,吉林,黑龍江,江蘇,浙江,安徽,福建,江西,山東,河南,湖北,湖南,其他";
$data=explode(",",$content);
for($index=0;$index<count($data);$index++){                         //數組迴圈
echo $data[$index];
echo "</br>";
}
?>

結言

好了,歡迎在留言區留言,與大家分享你的經驗和心得。

感謝你學習今天的內容,如果你覺得這篇文章對你有幫助的話,也歡迎把它分享給更多的朋友,感謝。

感謝!承蒙關照!您真誠的贊賞是我前進的最大動力!

image

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景 隨著容器化、雲原生等的流行,DevOps團隊也在不斷鼓吹「以無狀態為榮,以有狀態為恥」。因為有狀態的服務難以部署、難以擴展。下麵我舉幾個自己工作中實際的例子。 實例1-依賴系統目錄結構 剛轉來基礎架構的時候,接手了一個服務,原來是個應屆生寫的。所以可以理解,也就是基本能完成功能,反正也不是核心 ...
  • 首先我們要下載一個PowerDesigner,自己上百度下載哈!嘻嘻!!! 我這個是漢化版的 然後點這個,再到空白的地方點一下就創建好了。 然後單擊右邊箭頭然後雙擊 不管是製作的圖還是代碼生成的圖都可以一鍵生成代碼文本文件 PowerDesigner的功能還是很強大的,還有很多新花樣等著我們去挖掘! ...
  • 在web.xml文件中配置字元編碼過濾器: ...
  • 工廠模式的學習篇幅比較長,小編第一次看書的時候,就一口氣花了一個多小時,還是通讀。後面又斷斷續續地繼續瞭解了下,力爭做到清晰的認知,給大家一個簡單的學習方式。所以,這次模塊分的可能會比之前的多,涉及到多個工廠模式。好的,我們繼續沖鴨!!! 除了使用new操作符之外,還有更多製造對象的方法。我們將瞭解 ...
  • IOC:控制反轉(Inversion of Control,英文縮寫為 IOC) 簡單來講就是把代碼的控制權從調用方(用戶)轉變成被調用方(服務端) 以前的代碼控制權在調用方,所以要每當程式要更新修改功能時,一定要大量修改調用方的代碼才行,工程量大,維護麻煩。 後來有了IOC,可以將所有的功能模塊交 ...
  • What 本篇應該是穩定性「三十六計」系列的一篇:超時重試。但是「設置預設的超時和重試是一個基礎設施的基本素養」這句話我在我們組內三次開會的時候都說了。表達了我的一個理念。 Why 為什麼一個基礎設施要設置預設的超時和重試?想象下麵一個場景。 TCP協議里有一些基本的概念:MSL、TTL、RTT。 ...
  • 第一次寫文章 很粗略 請多多指教 有什麼疑問或者問題歡迎發郵件給我 [email protected] 鏈接:http://note.youdao.com/noteshare?id=ea9b9d16c549d6ddc827dd2e70c185b1&sub=B5DEED2633F242309ECEA96 ...
  • [TOC] 介紹 初學Java虛擬機幾天, 被方法區, 永久代這些混雜的概念搞混了. 我覺得學習這部分知識應該把官方定義的虛擬機運行時數據區域和虛擬機記憶體結構分開敘述, 要不然容易誤導. 本文先介紹官方文檔規定的運行時數據區域, 然後以JDK1.8的HotSpot虛擬機為例, 介紹虛擬機的記憶體結構. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...