<?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"
?>