新四季網

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

2023-09-10 22:26:34 1

本文章為連載文章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,注意:最後一個逗號「可以有」。

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

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

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

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

$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($數組); //先將數組的指針直接移向第一個單元,然後取得該新單元的值;

foreache遍歷流程原理圖:

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

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

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

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

}

其基本原理示意圖如下:

輸出結果為:

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

使用for和next遍歷數組

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

或者說:php中,使用for循環只能循環「下標為連續的純整數數組」;

結果:

each函數的使用

each函數的作用:先取得一個數組的「當前單元」的下標和值(並放入一個數組),然後將指針移到下一個單元。

使用形式:

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

list「函數」的使用:

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

形式:

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

作用:

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

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

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

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

........

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

while each list遍歷數組

數組變量的一些細節

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

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

結果為:

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

結果為:

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

以下演示的是「foreach默認是原數組上進行遍歷」的效果:

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

結果為:

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

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了