首页
/
每日頭條
/
生活
/
php從入門到精通代碼
php從入門到精通代碼
更新时间:2025-12-23 08:28:35

本文章為連載文章PHP入門的第二篇

建議先閱讀前篇文章:PHP從基礎到入門(三)

數組

數組基礎

含義:

數組就是一系列數據的集合體,他們按設定的順序排列為一個“鍊的形狀”。

注意:php中的數組單元的順序,跟下标無關!

數組定義(賦值):

$arr1 = array(3, 11, 5, 18, 2 );//這是最常見的數組,下标為“默認下标”,就是從0開始的整數;

$arr2 = array(“a”=>3, “bb”=>11, “cc123”=>5, ‘d1’=>18, ‘xyz’=>2 );關聯數組,下标為字符串,常見

$arr3 = array(1=>3, 10=>11, 3=>5, 0=>18, 88=>2 );下标可以人為給定;

$arr4 = array(1=>3, ‘a1’=>11, 3=>5, ‘mn’=>18, 88=>2 );下标可以數字和字符串混合使用;

$arr5 = array(5=>3, 11, 3=>5, ‘mn’=>18, 2 ); //有指定下标,也有“自動下标”,

//此時下标為:5,6,3,”mn”, 7

//可見,自動下标為“前面最大數字下标 1”

$arr6 = array(5=>3, 7.7=>11, 3=>5, ‘mn’=>18, 2 ); //此時下标為:5,7,3,”mn”, 8

$arr7 = array(5=>3, true=>11, false=>5, ‘mn’=>18, 2 ); //此時下标為:5,1,0,”mn”, 6

$arr8 = array(1=>3, 3=>33, true=>11, ); //此時下标為:1,3,其對應值為:11, 33

//下标如果有重複,後面的值覆蓋前面的值;

$arr9 = array(1=>3, -3=>33, 11, ); //此時下标為:1, -3, 2,注意:最後一個逗号“可以有”。

求一個二維數組的平均值:

php從入門到精通代碼(PHP從入門到精通)1

求一個一維數組的最大值:

php從入門到精通代碼(PHP從入門到精通)2

求交換一個一維數組的最大值和最小值的位置:

php從入門到精通代碼(PHP從入門到精通)3

php從入門到精通代碼(PHP從入門到精通)4

有關數組的交換,再說兩句:

$a = array( 3, 11, 5, 7, 20, 18); //下标是0,1,2,3,4,5

需求1:交換數組第0項和第3項:

$v1 = $a[0];

$v2 = $a[3];

$t = $v1;

$v1 = $v2;

$v2 = $t;//這種做法根本不行,因為v1,v2隻是2個變量,跟數組沒有關系了!

正确的做法是:

$t = $a[0];

$a[0] = $a[3];

$a[3] = $t;

需求2:交換數組首項和末項:

$pos1 = 0; //首項的下标

$pos2 = count($a) - 1; //最後一項的下标

$t = $a[$pos1];

$a[$pos1] = $a[$pos2];

$a[$pos2] = $t;

需求3:交換數組最大項和最小項:

$pos_max = ....; //經過一番計算得到最大項的下标;

$pos_min = ....; //經過一番計算得到最小項的下标

$t = $a[$pos_max];

$a[$pos_max] = $a[$pos_min];

$a[$pos_min] = $t;

數組的遍曆

foreach基本語法

foreach( $數組變量名 as 【$key =>】 $value ){

//循環體;這裡可以去“使用”$key 和 value;

//$key 和 $value 就是該遍曆語句一次次取得的數組的每一個單元(項)的下标和對應值。

//而且,它總是從數組的開頭往後按順序取數據。

}

數組的指針操作及遍曆原理:

首先,看看數組的一個“形象圖”:

$arr4 = array(1=>3, ‘a1’=>11, 3=>5, ‘mn’=>18, 88=>2 );

可以将其以視覺化的方式理解為:

數組下标:1“a1”3“mn”88
對應數據:8115182

其中,該箭頭,就是數組内部的所謂“指針”——注意,不可見,不可輸出,隻是一種輔助理解的圖形!

說明:

1,該箭頭,就是數組内部的所謂“指針”

2,默認情況下,該指針指向數組的第一個單元。

3,數組的有關單元的操作,如果沒有指定下标,則就是針對該指針指向的單元的操作。

4,所謂遍曆,其實就是一次次取得當前單元的鍵和值,并放入對應的變量$key, $value,然後移動指針到下一個單元。

則,數組,作為一個“總體數據單位”,有如下指針操作函數可以使用:

1,$v1 = current($數組); //獲得數組的當做指針所在單元的“值”;

2,$v2 = key($數組); //獲得數組的當做指針所在單元的“鍵”(下标);

3,$v3 = next($數組); //先将數組的指針移向下(後)一個單元,然後取得該新單元的值;

4,$v4 = prev($數組); //先将數組的指針移向上(前)一個單元,然後取得該新單元的值;

5,$v5 = end($數組); //先将數組的指針直接移向最後一個單元,然後取得該新單元的值;

6,$v6 = reset($數組); //先将數組的指針直接移向第一個單元,然後取得該新單元的值;

php從入門到精通代碼(PHP從入門到精通)5

foreache遍曆流程原理圖:

foreach( $數組變量名 as $key => $value ){

//循環體;這裡可以去“使用”$key 和 value;

//$key 和 $value 就是該遍曆語句一次次取得的數組的每一個單元(項)的下标和對應值。

//而且,它總是從數組的開頭往後按順序取數據。

}

其基本原理示意圖如下:

php從入門到精通代碼(PHP從入門到精通)6

php從入門到精通代碼(PHP從入門到精通)7

輸出結果為:

php從入門到精通代碼(PHP從入門到精通)8

可見:遍曆之後,指針已經超出數組合理位置了。

使用for和next遍曆數組

注意:對php數組,往往不能單純使用for循環進行遍曆。

或者說:php中,使用for循環隻能循環“下标為連續的純整數數組”;

php從入門到精通代碼(PHP從入門到精通)9

結果:

php從入門到精通代碼(PHP從入門到精通)10

each()函數的使用

each()函數的作用:先取得一個數組的“當前單元”的下标和值(并放入一個數組),然後将指針移到下一個單元。

使用形式:

$a = each($數組名); //此時$a就是一個數組了

php從入門到精通代碼(PHP從入門到精通)11

list()“函數”的使用:

list()函數用于一次性取得一個數組中從0開始的數字下标的多個單元的值!

形式:

list($變量1,$變量2,$變量3, .. ) = $數組;

作用:

上述一行代碼相當于如下代碼:

$變量1 = $數組[0];

$變量2 = $數組[1];

$變量3 = $數組[2];

........

注意:這裡變量的個數,要跟該數組的數字下标的單元對應,如果某個變量對應的該數字下标不存在,就會報錯!

php從入門到精通代碼(PHP從入門到精通)12

php從入門到精通代碼(PHP從入門到精通)13

while each() list()遍曆數組

php從入門到精通代碼(PHP從入門到精通)14

數組變量的一些細節

foreach也是正常的循環語法結構,可以有break和continue等操作。

遍曆過程中值變量默認的傳值方式是值傳遞。

php從入門到精通代碼(PHP從入門到精通)15

結果為:

php從入門到精通代碼(PHP從入門到精通)16

遍曆過程中值變量可以人為設定為引用傳遞:foreach($arr as $key => &$value){ ... }

php從入門到精通代碼(PHP從入門到精通)17

結果為:

php從入門到精通代碼(PHP從入門到精通)18

foreach默認是原數組上進行遍曆。但如果在遍曆過程中對數組進行了某種修改或某種指針性操作,則會複制數組後在複制的數組上繼續遍曆循環(原數組保持不變)。

以下演示的是“foreach默認是原數組上進行遍曆”的效果:

php從入門到精通代碼(PHP從入門到精通)19

然後,再演示:在某些情況下(修改或指針操作),不是在原數組身上進行遍曆。

php從入門到精通代碼(PHP從入門到精通)20

結果為:

php從入門到精通代碼(PHP從入門到精通)21

foreach中如果值變量是引用傳遞,則無論如何都是在原數組上進行。

php從入門到精通代碼(PHP從入門到精通)22

php從入門到精通代碼(PHP從入門到精通)23

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
衣服總變黃?恢複潔白亮麗有辦法!
衣服總變黃?恢複潔白亮麗有辦法!
衣服上我們經常會不小心滴到各種各樣的污漬,但是去除的方法卻不多,有時候一件很漂亮的衣服因為某快明顯的污漬而不得不束之高閣,小編為大家找了些除掉各種污漬的方法希望對大家有用。衣服總變黃?恢複潔白亮麗有辦法!衣服會變黃,多半是熒光劑變弱所緻,想要衣物恢複潔白亮麗,就得想法子。1、洗米水+橘子皮簡單又有效...
2025-12-23
保持衣物的光潔鮮豔需要做到這三點
保持衣物的光潔鮮豔需要做到這三點
随着現代社會的不斷發展,洗滌行業的技術也在革新,一些具備超強去污能力的洗滌産品也漸漸湧向市場,消滅日常頑漬自然不在話下。保持衣物的光潔鮮豔需要做到這三點秘訣1:不但潔淨也要護手衣服要潔淨,但是手的保護也很重要。時尚優雅的都市麗人,無論是工作和生活都呈現出最靓麗的一面。除了美麗的造型,作為女性第二張臉...
2025-12-23
不同面料衣服怎樣晾曬?
不同面料衣服怎樣晾曬?
服裝洗好後,總的晾曬原則是:應根據不同質料、不同顔色采取不同的晾曬方法。【1】絲綢服裝:洗好後要放在陰涼通風處自然晾幹,并且最好反面朝外。因為絲綢類服裝耐日光性能差,所以不能在陽光下直接曝曬,否則會引起織物褪色,強度下降。顔色較深或色彩較鮮豔的服裝尤其要注意這一點。另外,切忌用火烘烤絲綢服裝。【2】...
2025-12-23
家庭常用的消毒方法
家庭常用的消毒方法
為确保家庭成員的身體健康,下面介紹常用的家庭簡易消毒的方法:【1】食具與砧闆的消毒食具一般用沸水煮15~20分鐘,或用84消毒液浸泡30分鐘。【2】衣物與被褥的消毒對化纖衣物,可用0.1%的84消毒液浸泡60分鐘,也可用2%至5%來蘇爾液浸泡1~2小時,然後用清水洗淨。對于皮革及絲織物,可用福爾馬林...
2025-12-23
日本排放核污水對世界的影響有哪些?
日本排放核污水對世界的影響有哪些?
核污水排入海洋會影響到全球魚類遷徙、遠洋漁業、人類健康、生态安全等方方面面,因此這一問題絕不僅僅是日本國内的問題,而是涉及全球海洋生态和環境安全的國際問題。日本政府決定将福島第一核電站的核污水排入大海。污水一旦排放,将會影響整個太平洋,全球将面臨新的危機,人類也将面臨新的災難。核污水排入海洋會影響到...
2025-12-23
Copyright 2023-2025 - www.tftnews.com All Rights Reserved