PHP基礎

AtongM發表於2024-06-10
1、整體結構: -
<?php
//PHP 指令碼以 <?php 開始,以 ?> 結束,副檔名.php
?>
  • 註釋://or/**/

  • 基本輸出:print echo

<?php
echo "hello world";
?>

2、變數

例項:

<?php
$x = 5;
$y = 6;
echo ($x+$y);
?>
  • PHP 沒有宣告變數的命令 , 變數在第一次賦值給它的時候被建立,同py

PHP是一門弱型別語言

<?php
$x = 1;
$y = 1.25;
$z = "hello";
$m = true;
$arr = array("1" , "2" , "3");
$nptr = null;
var_dump($x);
echo "<br/>";
var_dump($y);
echo "<br/>";
var_dump($z);
echo "<br/>";
var_dump($arr);
echo "<br/>";
var_dump($nptr);
?>

PHP變數作用域

  • (1)區域性變數:只在函式內部作用的變數
  • (2)全域性變數:除函式外可以被指令碼內任何其他位置訪問
  • (3)global:幫助在函式內訪問全域性變數
  • (4)static:在程式執行期間使用佔用某記憶體且地址不變,且在函式呼叫後仍保留變數值再次呼叫函式的時候仍使用該值
<?php
function A()
{
	$y = 2;
	static $x = 1;
	$x++;
	$y++;
    echo "<br/> y , x=";
	var_dump($y , $x);
}
A();
A();
A();
?>

3、輸出

echo 和 print 區別:

  • echo可以輸出一個或多個字串
  • print只允許輸出一個字串,返回值總為 1

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

<?php
echo "<h2>PHP 很有趣!</h2>";
echo "我要學 PHP!<br>";
echo "這是一個", "字串,", "使用了", "多個", "引數。";

$txt1="學習 PHP";
$txt2="haha";
$cars=array("Volvo","BMW","Toyota");
 
echo $txt1;
echo "<br>";
echo "? $txt2 ?";
echo "<br>";
echo "我車的品牌是 {$cars[0]} <br/>";
print_r($cars);
echo "<br/>";
var_dump($cars);
?>

tip:感興趣可以瞭解一下EOP

<?php
echo <<<EOF
        <h1>我的第一個標題</h1>
        <p>我的第一個段落。</p>
EOF;
// 結束需要獨立一行且前後不能空格
?>

型別:

  • String(字串)
  • Integer(整型)
  • Float(浮點型)
  • Boolean(布林型)
  • Array(陣列)
  • Object(物件)
  • NULL(空值)
  • Resource(資源型別)

輸出不過多介紹了,上面有很多例子,唯一需要注意的是對於陣列print_r和var_dump輸出格式的區別

4、PHP型別比較:

  • 鬆散比較:使用兩個等號 ==比較,只比較值,不比較型別。
  • 嚴格比較:用三個等號 === 比較,除了比較值,也比較型別。
<?php
if(42 == "42") {
    echo '1、值相等';
}
 
echo PHP_EOL; // 換行符
 
if(42 === "42") {
    echo '2、型別相等';
} else {
    echo '3、型別不相等';
}
?>

5、PHP常量

define("A", "this is A");

<?php
define("A", "this is A");
echo A;
?>

常量是全域性的,不需要任何修飾就可以訪問。

6、字串

內建運算子.用於把兩個字串值連線起來。

<?php
$x = "1";
$y = "2";
echo $x . "+" . $y . "=" . "?";
?>

strlen:字串長度

<?php
$x = "1";
$y = "2";
$z = $x . "+" . $y . "=" . "?";
echo strlen($z);
?>

strpos():返回字串在另一字串中第一次出現的位置

<?php
$x = "1";
$y = "2";
$z = $x . "+" . $y . "=" . "?";
echo strpos($z , "2");
?>

trim():去除字串首尾處的空白字元

substr():擷取字串

<?php
$A =  "this is a test";
echo substr($A ,5,2);
?>

str_replace()替換所有匹配的字串為指定字串

<?php
$A =  "is is a test";
echo str_replace("is" , "fuck" , $A);
?>

explode()

<?php
$string = "apple,banana,orange";
$array = explode(",", $string);
print_r($array);
?>

implode()

<?php
$array = array("apple", "banana", "orange");
$string = implode(", ", $array);
echo $string; 
?>

strstr()

<?php
$email = "user@example.com";
$domain = strstr($email, '@');
echo $domain;
?>

tip:字串第一個位置下標為0

7、運算子

符號 作用 符號 作用
+ -
* /
% - 置負
~ 取反 . 合併

賦值運算子:

運算子 描述 示例
x = y 左運算元被設定為右側表示式的值 x = y
x += y x += y
x -= y x -= y
x *= y x *= y
x /= y x /= y
x %= y 模(除法的餘數) x %= y
A .= b 連線兩個字串 A .= b

遞增/遞減運算子

運算子 名稱 描述
++x 預遞增 x 加 1,然後返回 x
x++ 後遞增 返回 x,然後 x 加 1
--x 預遞減 x 減 1,然後返回 x
x-- 後遞減 返回 x,然後 x 減 1
比較運算子
運算子 名稱 描述 示例
== 等於 如果 x 等於 y,則返回 true 5 == 8
=== 絕對等於 如果 x 等於 y,且型別相同,則返回 true 5 === "5"
!= 不等於 如果 x 不等於 y,則返回 true 5 != 8
<> 不等於 如果 x 不等於 y,則返回 true 5 <> 8
!== 不絕對等於 如果 x 不等於 y,或型別不相同,則返回 true 5 !== "5"
> 大於 如果 x 大於 y,則返回 true 5 > 8
< 小於 如果 x 小於 y,則返回 true 5 < 8
>= 大於等於 如果 x 大於或等於 y,則返回 true 5 >= 8
<= 小於等於 如果 x 小於或等於 y,則返回 true 5 <= 8
還有邏輯運算子,陣列運算子等等,不多介紹了

三目運算子
(expr1) ? (expr2) : (expr3)

8、條件語句

與cpp相同,唯一區別是多條件判斷的else if中間沒有空格
eg:

<?php
$t=date("H");
if ($t<"10")
{
    echo "Have a good morning!";
}
elseif ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
?>

9、陣列

array()用於宣告陣列

數值陣列:key是正常的數字下標

關聯陣列:帶有指定的鍵的陣列,每個鍵關聯一個值

多維陣列:包含一個或多個陣列的陣列

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
<?php
$arr = array("bob" => 11 , "alice" => 13 , "candy" => 10);
print_r($arr);
echo "<br/>";
echo $arr['bob'];	
?>
<?php
$arr = array("asd" , "fgh" , array("123" , "456"));
var_dump($arr);
?>
  • count:獲取陣列長度count(arr)
  • foreach:遍歷陣列,等同於c#中foreach

遍歷陣列

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
    echo $value . PHP_EOL;
}
?>

遍歷關聯陣列

<?php
$arr = array("11" => "hello" , "22" => "world");
foreach($arr as $it => $value){
    echo $it . " " . $value . "<br/>";
}
?>

sort() - 對陣列進行升序排列

rsort() - 對陣列進行降序排列

asort() - 根據關聯陣列的值,對陣列進行升序排列

ksort() - 根據關聯陣列的鍵,對陣列進行升序排列

arsort() - 根據關聯陣列的值,對陣列進行降序排列

krsort() - 根據關聯陣列的鍵,對陣列進行降序排列

ksort

<?php
	$age=array("2"=>"35","3"=>"37","1"=>"43");
	ksort($age);
    print_r($age);
?>

asort

<?php
	$age=array("Peter"=>"35","Ben"=>"30","Joe"=>"43");
	asort($age);
    print_r($age);
?>

array_search():在陣列中查詢給定的value,並返回key值

array_pop() , array_push()

array_unique():刪除陣列中value重複的元素

array_sum():求和

array_merge():求多個陣列並集

array_diff():求兩個(或更多個)陣列的差集,返回所有在第一個陣列中,而不在其他陣列中的值,只比較鍵值

array_intersect():求兩個(或更多個)陣列的交集,只比較鍵值

10、迴圈

  • while迴圈:等同於cpp中迴圈

  • for迴圈:等同意cpp中for迴圈

11、函式

與cpp類似

<?php
function functionName()
{
    // 要執行的程式碼
}
?>

需要返回值和引數在對應位置直接加就行

<?php
function add($x,$y)
{
    $total=$x+$y;
    return $total;
}
 
echo "1 + 16 = " . add(1,16);
?>

12、魔術常量

PHP 向它執行的任何指令碼提供了大量的預定義常量。
有八個魔術常量它們的值隨著它們在程式碼中的位置改變而改變。

  • __LINE__ : 返回行數
<?php
echo '這是第 " '  . __LINE__ . ' " 行';
?>
  • __FILE__ :返回檔案地址
<?php
echo '該檔案位於 " '  . __FILE__ . ' " ';
?>
  • __FUNCTION__ :返回函式名
<?php
function test() {
    echo  '函式名為:' . __FUNCTION__ ;
}
test();
?>
  • __CLASS__ : 返回類名
<?php
class test {
    function _print() {
        echo '類名為:'  . __CLASS__ . "<br>";
        echo  '函式名為:' . __FUNCTION__ ;
    }
}
$t = new test();
$t->_print();
?>
  • __METHOD__ : 類的方法名
<?php
function test() {
    echo  '函式名為:' . __METHOD__ ;
}
test();
?>
  • __NAMESPACE__
<?php
namespace MyProject;
 
echo '名稱空間為:"', __NAMESPACE__, '"'; // 輸出 "MyProject"
?>

相關文章