日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php数组基础

發(fā)布時(shí)間:2023/12/1 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php数组基础 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

php中,數(shù)組的下標(biāo)可以是整數(shù),或字符串。

php中,數(shù)組的元素順序不是由下標(biāo)決定,而是由其“加入”的順序決定。

定義:
$arr1 = array(元素1,元素2,。。。。。 );

array(1, ?5, ?1.1, ?“abc”, ?true, ?false); //可以存儲(chǔ)任何數(shù)據(jù),此時(shí)為“默認(rèn)下標(biāo)”,

array(2=>1, ?5=>5, ?3=>1.1, ?7=>“abc”, ?0=>true);//下標(biāo)可以任意設(shè)定(無(wú)需順序,無(wú)需連續(xù))

array(2=>1, ?5, ?1=>1.1, ?“abc”, ?0=>true)//可以加下標(biāo),也可以不加(默認(rèn)下標(biāo)),下標(biāo)分別是:2,3,1,4,0

//默認(rèn)下標(biāo)規(guī)則:前面已經(jīng)用過(guò)的最大數(shù)字下標(biāo)+1

array(2=>1, ?‘dd’=>5, ?1=>1.1, ?“abc”, ?0=>true)//混合下標(biāo),同樣遵循默認(rèn)下標(biāo)規(guī)則

array(-2=>1, ?‘dd’=>5, ?1.1, ?“abc”, ?true); //負(fù)數(shù)下標(biāo)不算在整數(shù)下標(biāo)中,而只當(dāng)作字符下標(biāo)

//則最好3項(xiàng)的下標(biāo)是:0, 1, 2

array(2.7=>1, ?‘dd’=>5, ?1=>1.1, ?“abc”, ?0=>true)//浮點(diǎn)數(shù)下標(biāo)為自動(dòng)轉(zhuǎn)換為整數(shù),且直接抹掉小數(shù)

array(“2.7”?=>1, ?‘dd’=>5, ?“11”=>1.1, ?“abc”, ?true)//純數(shù)字字符串下標(biāo),當(dāng)作數(shù)字看待,

//則此時(shí)下標(biāo)為:2, ‘dd’, 11, 12, 13

array(2=>1, ?‘dd’=>5, ?true=>1.1, ?“abc”, ?false=>true)//布爾值當(dāng)下標(biāo),則true1false0

array(2=>1, ?‘dd’=>5, ?2=>1.1, ?“abc”, ?true)//如果下標(biāo)跟前面的重復(fù),則單純覆蓋前面同名下標(biāo)的值

//此時(shí)相當(dāng)于為:array(2=>1.1, ?‘dd’=>5, ?“abc”, ?true)

其他形式;

$arr1[] = 1;

$arr1[] = 5;

$arr1[] = 1.1; //直接在變量后面使用[],就成為數(shù)組,并依次賦值。

。。。。

$arr2[‘a(chǎn)a’] = 1;

$arr2[‘bbbcc’] = 5;

$arrr2[5] = 1.1;

。。。。。。。。

這種形式寫(xiě)的下標(biāo),其實(shí)跟使用array語(yǔ)法結(jié)構(gòu)幾乎一樣

取值:通過(guò)下標(biāo)。

賦值(同定義):

數(shù)組的分類(lèi)

從鍵值關(guān)系:

關(guān)聯(lián)數(shù)組:

通常是指下標(biāo)為字符串,并且該字符串大體可以表達(dá)出數(shù)據(jù)的含義的數(shù)組。

例:

$person = array(“name” => “小花”, “age”=>18,“edu” => “大學(xué)畢業(yè)” ,);

索引數(shù)組:

通常是指一個(gè)數(shù)組的下標(biāo)是嚴(yán)格的從0開(kāi)始的連續(xù)的數(shù)字下標(biāo)——跟js數(shù)組一樣。

從數(shù)組層次來(lái)分:

一維數(shù)組:

就是一個(gè)數(shù)組中的每一個(gè)元素值,都是一個(gè)普通值(非數(shù)組值)

$arr1 = array(“name” => “小花”, “age”=>18,“edu” => “大學(xué)畢業(yè)”)

二維數(shù)組:

一個(gè)數(shù)組中的每一項(xiàng),又是一個(gè)一維數(shù)組。

$arr1 = array(“name” => array(‘小花’, ‘小芳’, ‘小明’, ),“age”=> array(18, 22, 19),“edu” => array(“大學(xué)畢業(yè)”, ‘中學(xué)’, ‘小學(xué)’));

?

多維數(shù)組:

依此類(lèi)推。。。

多維數(shù)組的一般語(yǔ)法形式:

$v1 = 數(shù)組名[下標(biāo)][下標(biāo)][.....]

數(shù)組遍歷

遍歷基本語(yǔ)法

foreach( $arr ??as ??[ $key ?=> ] $value ) //$key可以稱(chēng)為鍵變量,$value可以稱(chēng)為值變量。

{

//這里就可以對(duì)$key ?$value 進(jìn)行所有可能的操作——因?yàn)樗麄兙褪且粋€(gè)變量

//$key 代表每次取得元素的下標(biāo),可能是數(shù)字,也可以能是字符串

//$value 代表每次取得元素的值,可能是各種類(lèi)型。

//此循環(huán)結(jié)構(gòu)會(huì)從數(shù)組的第一項(xiàng)一直遍歷循環(huán)到最后一項(xiàng),然后結(jié)束。

}

交換原理:

?

foreach 遍歷細(xì)節(jié)探討

foreach也是正常的循環(huán)語(yǔ)法結(jié)構(gòu),可以有break和continue等操作。

遍歷過(guò)程中值變量默認(rèn)的傳值方式是值傳遞。

遍歷過(guò)程中值變量可以人為設(shè)定為引用傳遞

foreach($arr as $key => &$value){ ... }

鍵變量不可以設(shè)定為引用傳遞

?

foreach默認(rèn)是原數(shù)組上進(jìn)行遍歷。但如果在遍歷過(guò)程中對(duì)數(shù)組進(jìn)行了某種修改或某種指針性操作(就是指前面的指針函數(shù)),則會(huì)復(fù)制數(shù)組后在復(fù)制的數(shù)組上繼續(xù)遍歷循環(huán)。

?

foreach中如果值變量是引用傳遞,則無(wú)論如何都是在原數(shù)組上進(jìn)行。

數(shù)組排序思想介紹

冒泡排序

目標(biāo):將下列數(shù)組進(jìn)行正序(從小到大)排列出來(lái)

$arr2 = array(5, ?15 , ?3, ?4911);

一般性邏輯描述:

1,對(duì)該數(shù)組從第一個(gè)元素開(kāi)始,從左到右,相鄰的2個(gè)元素比較大小:如果左邊的比右邊的大,則將他們倆交換位置,結(jié)果:

array( 5, ?15, ?3, ?4911);(原始)

array( 5, ?15, ?3, ?4911);

?array( 5, ?315, ?4911);

array( 5, ?34, ?15 911);

array( 5, ?34, ?915 11);

array( 5, ?34, ?91115);

此時(shí),才“走完一輪回”,繼續(xù)下一輪:

array( 5, ?34, ?91115);(初始)

array( 3 ?5 4, ?91115);

array( 3 ?45??91115);

array( 3 ?45 ?9 1115);

array( 3 ?45 ?911 15);

繼續(xù)下一輪:

array( 3 ?45 ?911 15);

。。。。。。。。

最初:

5

15

3

4

9

11

1趟之后:

5

3

4

9

11

15

2趟之后

3

4

5

9

11

15

3趟之后

3

4

5

9

11

15

4趟之后

3

4

5

9

11

15

5趟之后

3

4

5

9

11

15

隱含的邏輯描述(假設(shè)數(shù)組有n項(xiàng)):

1, 需要進(jìn)行n-1趟的“冒泡”比較過(guò)程。

2, 每一趟的比較都前一趟少比一次,第一趟需要比較n-1

3, 每趟比較,都是從數(shù)組的開(kāi)頭(0)開(kāi)始,跟緊挨的元素比較,并進(jìn)行交換(需要的時(shí)候)

選擇排序

目標(biāo):將下列數(shù)組進(jìn)行正序(從小到大)排列出來(lái)

$arr2 = array( 5, ?15, ?3, ?4911);

一般性邏輯描述:

1趟:取得該數(shù)組中的最大值及其下標(biāo),然后跟該數(shù)組的最后一項(xiàng)“交換”(倒數(shù)第1項(xiàng)確定)

2趟:取得該數(shù)組中除最后1項(xiàng)中的最大值及其下標(biāo),然后跟倒數(shù)第2項(xiàng)交換(倒數(shù)第2項(xiàng)確定)

3趟:取得該數(shù)組中除最后2項(xiàng)中的最大值及其下標(biāo),然后跟倒數(shù)第3項(xiàng)交換(倒數(shù)第3項(xiàng)確定)

。。。。。。

最初:

5

15

3

4

9

11

1趟之后:

5

11

3

4

9

15

2趟之后

5

9

3

4

11

15

3趟之后

5

4

3

9

11

15

4趟之后

3

4

5

9

11

15

5趟之后

3

4

5

9

11

15

隱含的邏輯描述(假設(shè)數(shù)組有n項(xiàng)):

1,要進(jìn)行n-1趟才可能得出結(jié)論

2,每一趟要找的數(shù)據(jù)的個(gè)數(shù)都比前一趟少一個(gè),第1趟要找n個(gè)

3,每次找出的最大值所在的項(xiàng),和要與之進(jìn)行交換的項(xiàng)的位置,依次減1,第一次的位置n-1

數(shù)組查找:

就是從一個(gè)數(shù)組中找一個(gè)元素的數(shù)據(jù)(可能是找下標(biāo),也可以是找數(shù)據(jù)值)

數(shù)組的查找通常有2種需求:

1:判斷要找的數(shù)據(jù)是否存在。

2:找出要找的數(shù)據(jù)的位置(下標(biāo))

順序查找

從一個(gè)數(shù)組中按順序找出一個(gè)元素(下標(biāo)或值)

需求1:判斷要找的數(shù)據(jù)是否存在

$v1 = 10;function search1( $arr, $v1){foreach($arr as $value ){if( $c1 == $value ){return true;}}return false;}

需求1:找出要找的數(shù)據(jù)的位置(下標(biāo))

$v1 = 10;function search2( $arr, $v1){foreach($arr as $key => $value ){if( $c1 == $value ){return $key; //找到,返回位置(下標(biāo)) }}return false;}

//特別注意以下寫(xiě)法:

if ( ($m = search2( $arr, 10)) === false){echo “沒(méi)找到。”}else{echo “找到了,位置為:$m”}

二分查找

二分查找的前提:

1,針對(duì)一個(gè)已經(jīng)進(jìn)行了排序的數(shù)組(即里面的數(shù)據(jù)已經(jīng)是有序了)

2,是連續(xù)的索引數(shù)組,比如下標(biāo)為:0, 1, 2, 3, ......

比如:

$arr2 = array( 3, ?4, ?5, ?15, ?19, 21, ?25, ?28, ?30, ?30, ?33, ?38, ?44, 51, 52, 55, 60, ?77, 80, 82, ?83);

轉(zhuǎn)載于:https://www.cnblogs.com/ybygb-geng/p/9737837.html

總結(jié)

以上是生活随笔為你收集整理的php数组基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。