php基礎 筆記

經常看到有人說:PHP 是世界上最好的語言。
雖然是以半開玩笑半認真的語氣說出,但也反映了PHP 的重要性與其功能之強大。

php中的 :: 是調用類中的靜態方法或者常量,屬性的符號

位置

PHP 腳本可以放在文檔中的任何位置。
PHP 腳本以 <?php 開始,以 ?> 結束:

<?php
// PHP 代碼
?>

變量

變量以 $ 開始,後面接變量名稱,調用變量也需要帶上 $

PHP 是一門弱類型語言
聲明變量時不需要聲明該變量的數據類型,PHP 會根據變量的值,自動把變量轉換爲正確的數據類型。

局部和全局作用域
一般學過一兩門語言都知道局部和全局作用域了

global 關鍵字 global 關鍵字用於函數內訪問全局變量。
函數體內引用全局變量,必須在函數內部使用“global”關鍵字
在這裏插入圖片描述
Static 作用域 當一個函數完成時,它的所有變量通常都會被刪除。然而,有時候您希望某個局部變量不要被刪除。要做到這一點,需要在第一次聲明變量時使用 static 關鍵字,然後,每次調用該函數時,該變量將會保留着函數前一次被調用時的值。

輸出

在 PHP 中有兩個基本的輸出方式: echo 和 print。
區別
· echo - 可以輸出一個或多個字符串

· print - 只允許輸出一個字符串,返回值總爲 1

提示:echo 輸出的速度比 print 快, echo 沒有返回值,print有返回值1。

語法很簡單,就是

echo "...";
print "...";

如果輸出變量,不需要加 " "

我覺得最厲害的地方是輸出語句可以輸出 HTML 標籤,這樣就可以很方便的進行web 與 mysql 的交互

定界符EOF

PHP EOF(heredoc)是一種在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序語言(像Perl、PHP、Python和Ruby)裏定義一個字符串的方法。

  1. 必須後接分號,否則編譯通不過。
  2. 開始標記和結束標記相同,比如常用大寫的 EOT、EOD、EOF 來表示,但是不只限於那幾個(也可以用:JSON、HTML等),只要保證開始標記和結束標記不在正文中出現即可
  3. 結束標識必須頂格獨自佔一行(即必須從行首開始,前後不能銜接任何空白和字符)。
  4. 開始標識可以不帶引號或帶單雙引號,不帶引號與帶雙引號效果一致,解釋內嵌的變量和轉義符號,帶單引號則不解釋內嵌的變量和轉義符號。
  5. 當內容需要內嵌引號(單引號或雙引號)時,不需要加轉義符,本身對單雙引號轉義,此處相當與q和qq的用法。
  6. 位於開始標記和結束標記之間的變量可以被正常解析,但是函數則不可以。在 heredoc 中,變量不需要用連接符 . 或 , 來拼接,HTML標籤也可以被解析
    在這裏插入圖片描述
    輸出:
    在這裏插入圖片描述
    但是如果裏面包含了界定符就會出錯:
    在這裏插入圖片描述

數據類型

String(字符串), Integer(整型), Float(浮點型), Boolean(布爾型), Array(數組), Object(對象), NULL(空值)。

var_dump() 方法
判斷一個變量的類型與長度,並輸出變量的數值,如果變量有值,則輸出是變量的值,並返回數據類型。
顯示關於一個或多個表達式的結構信息,
在這裏插入圖片描述
php 中數組的定義:

$cars=array("Volvo","BMW","Toyota");

在這裏插入圖片描述

類型比較

鬆散比較:使用兩個等號 == 比較,只比較值,不比較類型。
嚴格比較:用三個等號 === 比較,除了比較值,也比較類型。

0 false null
鬆散比較是相等的,嚴格比較 不相等

<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);

常量

php 中常量的定義方法我覺得很特別
通過define() 函數設置變量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

name:必選參數,常量名稱,即標誌符。
value:必選參數,常量的值。
case_insensitive :可選參數,如果設置爲 TRUE,該常量則大小寫不敏感。默認是大小寫敏感的。

常量在定義後,默認是全局變量,可以在整個運行的腳本的任何地方使用。

字符串

字符串類型大家都很熟悉了,下面介紹一些字符串中的操作:

PHP 並置運算符
在 PHP 中,只有一個字符串運算符。

並置運算符 . 用於把兩個字符串值連接起來。

PHP strlen() 函數
返回字符串長度

PHP strpos() 函數
strpos() 函數用於在字符串內查找一個字符或一段指定的文本。

如果在字符串中找到匹配,該函數會返回第一個匹配的字符位置。如果未找到匹配,則返回 FALSE。

數組

在 PHP 中,array() 函數用於創建數組:
在 PHP 中,有三種類型的數組:
數值數組 - 帶有數字 ID 鍵的數組

$cars=array("Volvo","BMW","Toyota");

通過下標訪問
獲取數組長度:count()
遍歷數值數組:

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

關聯數組 - 帶有指定的鍵的數組,每個鍵關聯一個值

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

或:

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

通過鍵來訪問值
遍歷關聯數組:

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

多維數組 - 包含一個或多個數組的數組
一個數組中的值可以是另一個數組,另一個數組的值也可以是一個數組。依照這種方式,我們可以創建二維或者三維數組

數組排序:
sort() - 對數組進行升序排列
rsort() - 對數組進行降序排列
asort() - 根據關聯數組的值,對數組進行升序排列
ksort() - 根據關聯數組的鍵,對數組進行升序排列
arsort() - 根據關聯數組的值,對數組進行降序排列
krsort() - 根據關聯數組的鍵,對數組進行降序排列

添加元素
添加數組元素通過array_push()

array_push(array,value1,value2...)

但是這隻能添加值,無法指定指定關聯數組的鍵值對。如果想添加關聯數組怎麼辦呢?
1)直接通過指定鍵來添加值:

$arr["hi"] = "hello";

2)通過數組相加來添加元素

$arr = array("hi"=>"hello") + $arr;

3)使用array_merge方法

$arr = array_merge(array("你好"=>"hello"), $arr);

數組的更多操作請參考:
https://www.runoob.com/php/php-ref-array.html

循環

while循環:
while - 只要指定的條件成立,則循環執行代碼塊
do…while - 首先執行一次代碼塊,然後在指定的條件成立時重複這個循環

for循環
普通for循環,大家都知道

foreach 循環
foreach 循環用於遍歷數組。每種語言的寫法可能大同小異

foreach ($array as $value)
{
要執行代碼;
}

函數

PHP 的真正威力源自於它的函數。
在 PHP 中,提供了超過 1000 個內建的函數。

基礎的語法和其他語言差不多
php 使用 function 來創建php 函數

PHP 中類的對象調用類中方法使用
->

Static 關鍵字

聲明類屬性或方法爲 static(靜態),就可以不實例化類而直接訪問

靜態屬性不能通過一個類已實例化的對象來訪問(但靜態方法可以)。

由於靜態方法不需要通過對象即可調用,所以僞變量 $this 在靜態方法中不可用。

靜態屬性不可以由對象通過 -> 操作符來訪問。

php中的 :: 是調用類中的靜態方法或者常量,屬性的符號

<?php
class Foo {
  public static $my_static = 'foo';
  
  public function staticValue() {
     return self::$my_static;
  }
}

print Foo::$my_static . PHP_EOL;
$foo = new Foo();

print $foo->staticValue() . PHP_EOL;
?>    

Final 關鍵字

PHP 5 新增了一個 final 關鍵字。如果父類中的方法被聲明爲 final,則子類無法覆蓋該方法。如果一個類被聲明爲 final,則不能被繼承。

$_GET 變量

在 PHP 中,預定義的 $_GET 變量用於收集來自 method=“get” 的表單中的值。
預定義的 $_GET 變量用於收集來自 method=“get” 的表單中的值。
從帶有 GET 方法的表單發送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),並且對發送信息的量也有限制。
何時使用 method=“get”?
在 HTML 表單中使用 method=“get” 時,所有的變量名和值都會顯示在 URL 中。

註釋:所以在發送密碼或其他敏感信息時,不應該使用這個方法!

然而,正因爲變量顯示在 URL 中,因此可以在收藏夾中收藏該頁面。在某些情況下,這是很有用的。

註釋:HTTP GET 方法不適合大型的變量值。它的值是不能超過 2000 個字符的。

$_POST 變量

在 PHP 中,預定義的 $_POST 變量用於收集來自 method=“post” 的表單中的值。
預定義的 $_POST 變量用於收集來自 method=“post” 的表單中的值。

從帶有 POST 方法的表單發送的信息,對任何人都是不可見的(不會顯示在瀏覽器的地址欄),並且對發送信息的量也沒有限制。

註釋:然而,默認情況下,POST 方法的發送信息的量最大值爲 8 MB(可通過設置 php.ini 文件中的 post_max_size 進行更改)。

何時使用 method=“post”?
從帶有 POST 方法的表單發送的信息,對任何人都是不可見的,並且對發送信息的量也沒有限制。

然而,由於變量不顯示在 URL 中,所以無法把頁面加入書籤。

$_REQUEST 變量

預定義的 $_REQUEST 變量包含了 $ _GET、$_POST 和 $_COOKIE 的內容。

$_REQUEST 變量可用來收集通過 GET 和 POST 方法發送的表單數據。

實例
你可以將 “welcome.php” 文件修改爲如下代碼,它可以接受 $ _GET、$_POST等數據。

歡迎 <?php echo $_REQUEST["fname"]; ?>!<br>
你的年齡是 <?php echo $_REQUEST["age"]; ?>  歲。

包含

includerequire 語句用於在執行流中插入寫在其他文件中的有用的代碼。

include 和 require 除了處理錯誤的方式不同之外,在其他方面都是相同的:

· require 生成一個致命錯誤(E_COMPILE_ERROR),在錯誤發生後腳本會停止執行。
· include 生成一個警告(E_WARNING),在錯誤發生後腳本會繼續執行。

注意:
require 一般放在 PHP 文件的最前面,程序在執行前就會先導入要引用的文件;
include 一般放在程序的流程控制中,當程序執行時碰到纔會引用,簡化程序的執行流程。

文件操作

fopen() 函數用於在 PHP 中打開文件。

此函數的第一個參數含有要打開的文件的名稱,第二個參數規定了使用哪種模式來打開文件:

<html>
<body>

<?php
$file=fopen("welcome.txt","r");
?>

</body>
</html>

在這裏插入圖片描述

檢測文件末尾(EOF)

feof() 函數檢測是否已到達文件末尾(EOF)。

在循環遍歷未知長度的數據時,feof() 函數很有用。

註釋:在 w 、a 和 x 模式下,您無法讀取打開的文件!
if (feof($file)) echo “文件結尾”;

逐行讀取文件
fgets() 函數用於從文件中逐行讀取文件。

註釋:在調用該函數之後,文件指針會移動到下一行。

下面的實例逐行讀取文件,直到文件末尾爲止:

<?php
$file = fopen("welcome.txt", "r") or exit("無法打開文件!");
// 讀取文件每一行,直到文件結尾
while(!feof($file))
{
    echo fgets($file). "<br>";
}
fclose($file);
?>

逐字符讀取文件

fgetc() 函數用於從文件中逐字符地讀取文件。

註釋:在調用該函數之後,文件指針會移動到下一個字符。

下面的實例逐字符地讀取文件,直到文件末尾爲止:

<?php
$file=fopen("welcome.txt","r") or exit("無法打開文件!");
while (!feof($file))
{
    echo fgetc($file);
}
fclose($file);
?>

注意:
如果打開一個文件,文件名爲中文,如果系統編碼和當前文檔編碼不一致,會導致文件找不到無法打開,解決方法是用 iconv 函數編碼轉換成一致,如下:

$fpath=iconv('UTF-8','GB2312',"題庫.csv");
$file=fopen($fpath,"r") or exit("無法打開文件!");
//此處省略相關操作
fclose($file);   

用相對路徑打不開子目錄中的文件時,可用絕對路徑打開,如下:

$file=fopen(dirname(__FILE__).'\\files\\tk.csv',"r") or exit("無法打開文件!");   
//此處省略相關操作
fclose($file);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章