日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP 數組操作詳解【遍歷、指針、函數等】

瀏覽:216日期:2022-09-10 13:27:07

本文實例總結了PHP 數組操作。分享給大家供大家參考,具體如下:

數組

數據由元素組成,元素由鍵和值組成

數組分類

關聯數組關聯數組,元素的下標與元素的值存在邏輯上的關系,稱之為關聯數組。指的是,鍵和值之間存在管理。

$a1 = array(’name’ => ’李尋歡’, ’age’ => 34);

索引數組索引數組,元素的值和下標不存在邏輯關系,而下標只表示值索引位置。

$a1 = array(’李尋歡’,34);數組遍歷

所要的完成遍歷數組,需要依次得到每個元素的信息(鍵的信息和值的信息).核心在于數組的元素指針上

數組的元素指針

每一個數組內的,都有一個內部的指向某個元素的指針。默認情況下,這個指針指向數組的第一個元素.每個數組只有一個指針,同時時刻,只能指向一個元素,因此指針的位置,可以是任意一個已存在的元素。同時指針可能指向數組的外部(數組的末端[最后一個的外邊]),就是非法位置.

PHP 數組操作詳解【遍歷、指針、函數等】

數組遍歷就是 獲得指針指向的元素的信息,移動指針,配合循環結構就可以完成。

php提供

得到指針所指向的元素的信息

可以移動指針

current(); 得到當前指針指向元素的值key(); 得到當前指向元素的鍵next(); 可以移動數組的指針

prev(); 向上移動一個元素.reset(); 重置指針(移動到第一個元素) end(); 移動到最右一個元素

數組末端,最右一個元素往右,非法的范圍

next(), 和prev(); 可以將數組指針移動到非法位置上.

//$students 是數組end($students);next($students);var_dump(current($students)); //false;reset($students);prev($students);var_dump(current($students)); //false;

如果已經移動到非法位置,不可相對移動來挽回,此時,需要強制移動到某個位置, reset() , 和 end()

//$students 是數組end($students);next($students);prev($students);var_dump(current($students)); //false;reset($students);prev($students);next($students);var_dump(current($students)); //false;foreach()

foreach(); 結構專門用于數組遍歷的一個結構,也是一個循環結構

foreach ( $arr as $key => $val ) { //循環體}

如果元素的鍵,沒有意義的話,可以使用 省略鍵的信息

foreach ( $arr as $val ) {}

注意:

foreach會移動數組指針,并且,在foreach遍歷完畢后,指針處于非法位置(數組末端)foreach在遍歷一個數組元素時,會初始化元素指針,因此指針所指向的位置,不會影響到foreach的遍歷foreach在遍歷時,原數組的拷貝,而不是直接在原數組進行遍歷,如果在遍歷過程中,對遍歷的數組進行修改,是不會影響到遍歷的結果 foreach所使用的保存元素值的變量,對其操作,不會對原數組產生影響對值的操作,同時支持引用傳遞:可以改變原數組的值。

只需要在變量前增加&符號 即可。

PHP 數組操作詳解【遍歷、指針、函數等】

foreach流程圖

PHP 數組操作詳解【遍歷、指針、函數等】

foreach也是循環結構, 受break和continue的控制。

each()

遍歷每一個可以獲得當前的元素信息。(鍵和值),同時向下移動指針獲得元素信息,返回的是, 關聯和索引數組其中:關聯數組部分。

key => 當前元素的鍵value => 元素的值

索引數組部分

0 => 元素的下標1 => 元素的值$arr = array(10, 12, 200);$arr2 = array( ’name’ => ’zf’, ’age’ => 20);var_dump(each($arr));var_dump(each($arr2));

只遍歷第一項 由于each既可以獲取元素信息,又可以移動指針,因此非常適合完成除foreach外的手動的數組的遍歷.

each+while+list的遍歷數組

each如果指針非法,each返回false。 判斷each的返回值

// 先eaech,將each的結果賦給$element// 判斷$element 是否成立(自動轉成布爾類型)while($element = each($sutdents)) { echo ’Key:’, $element[0]; echo ’$nbsp;’; echo ’Value:’, $element[1]; echo ’<br/>’;}

list()可以使在遍歷的循環體內直接使用保存元素下標的變量.直接使用保存元素下標的變量和保存元素值的變量.一個函數,可以通過一個數組,針對多個變量同時初始化

$student = array(’李尋歡’, ’天機老人’, ’阿飛’);list($a, $b, $c) = $student; // 將數組內的元素, 以此賦值給list結構中的變量 // 類似 es6 中的解構賦值var_dump($a, $b, $c);

list 針對索引數組生效

$student = array(’李尋歡’, ’天機老人’, ’阿飛’);while (list($k, $v) = each($student)) { echo ’Key:’, $k; echo ’&nbsp;’; echo ’Value:’, $v; echo ’<br/>’; };數組復制元素指針

如果原數組指針合法:數組在復制時,指針位置也會隨之復制到目標數組內.

$a1 = array(’a’, ’b’, ’c’);$a2 = $a1;var_dump(current($a2)); // aecho ’<hr/>’;$a1 = array(’a’, ’b’, ’c’);next($a1);$a2 = $a1;var_dump(current($a2)); // b

如果原數組指針非法: 將重置新數組的指針; 重置為默認指針.

$a1 = array(’a’, ’b’, ’c’);end($a1);next($a1);$a2 = $a1;var_dump(current($a2)); // aforeach與數組指針關系

foreach對指針的影響有不確定性,因此不要依賴foreach遍歷后的指針位置,如果需要操作,需要先重置(reset();).

數組遍歷的是,原數組的拷貝,而不是直接在數組上進行操作.php內部優化,寫時復制(COW--copy on write) .如果不對原數組執行寫操作. 是不會發生復制的過程. 在對原數組進行寫操作時,這個復制的過程才會發生.數組復制時的指針問題

PHP 數組操作詳解【遍歷、指針、函數等】

foreach遍歷的時候,是拷貝,但是發生在對原數組進行操作之后.意味著,在寫操作之前,遍歷操作的就直接是原數組. 一旦發生了寫操作,則會形成一個真實的拷貝,foreach去遍歷的數組就與原數組不是同一個. 因此原數組指針就不會繼續發生變化. 唯一的例外在最后一次循環體內對數組進行寫操作,此時在復制前指針已經非法,則結果會被重置.

在實際操作中,建議處理完畢后,可以立即reset(); 上面的問題,只適用于$value ,保存元素值的變量是值傳遞的情況,如果是引用傳遞的話.直接操作原數組!$key不能引用傳遞.

array函數常用函數

array_fill(起始位置,長度,內容); //使用固定值填充某些數量的元素.count(); //統計數組元素個數. 支持遞歸統計.range(起始范圍,結束范圍); //按照范圍創建數組元素.array_merge(); //合并多個數組.

// 注意一個下標沖突的情況,如果索引下標沖突,順序增加.// 關聯數組沖突. 后合并的要覆蓋前面的.array_merge(range(’a’,’z’),range(’A’,’Z’));

array_rand(數組,選擇的數量[默認一個]); //隨機從數組中取得某些元素. 得到的是隨機的下標,而不是元素值. 并且,如果是多個元素,會按照下標的大小進行排序.

shuffe(); //打亂元素順序,參數是引用傳遞.

// 驗證碼中的 4位 隨機數// 創建一個大小混合的數組$chars = array_merge(range(’a’,’z’),range(’A’,’Z’));// 取得4個元素下標$rand_keys = array_rand($chars, 4);// 打亂shuffle($rand_keys);// 利用下標獲取元素值foreach ($rand_keys as $v) { echo $chars[$v];} 鍵值操作

array_value(); //取得所有元素的所有值. array_key(); //取得所有元素的所有鍵.

array_combine(); // 利用兩個數組,其中一個為 鍵 ,另一個為值得到一個新數組.in_array(); //判斷數組中是否有某個值 array_key_exists(); //是否有某個元素.

array_search(); // 在數組內查找某個元素值,找到返回 下標. 找不到返回false.array_filp(); // 交換元素的鍵和值.

合并拆分

’+’號

$a1 = array(1, 2, 3, 4);$a2 = array(6, 7, 8);var_dump($a1+$a2); // 如果出現下標沖突,則忽略后邊的元素

array_merge($arr1, $arr2); // 合并多個數組. array_chunk($arr, len); //按照子數組的長度,進行對原數組拆分.

explode(); //將一個字符串,按照某個字符,分割成多個部分.implode(); //可以將數組元素的值, 利用某個字符,連接

$arr = array(’aa’, ’bb’);echo $arr = implode(’-’, $arr); // aa-bbprint_r(explode(’-’, $arr));

compact(); 合并, 利用多個變量,合并成一個數組. 其中變量的名字作為數組的下標. 變量的值,作為值. 注意參數是變量名

$width = 2;$height = 10;$arr = compact(’width’, ’height’);

extact(); 拆分,將一個變量,拆分成一個變量。每一個元素為一個變量。 下標為變量名,值為變量值. 字符串的下標.注意,如果當前已經存在變量名,則會發生將已有變量值替換的操作.這個是默認行為.可以修改,通過extact(),第二個參數. 默認為EXTR_OVERWRITE表示重寫 //EXTR_SKIP 表示略過.

PHP 數組操作詳解【遍歷、指針、函數等】

array_diff(數組1,數組2); // 得到數組1中與數組2中不相同的元素. -- 差集 值判斷. array_intersect(數組1,數組2);// 得到數組1中與數組2中相同的元素. --交集.

array_map($callback, $arr1); // 對數組內的每個元素,進行一次操作.分別調用某個函數進行一次調用.如果函數是自定義的.注意,應該有參數接收元素值,同時應該有返回值

$a1 = array(10, 20, 3);function x2 ( $item ) { return $item * 3;}$arr = array_map(’x2’, $a1);var_dump($arr);

只負責定義,不負責調用. array_map(); 函數內部負責調用.可以同時接收或處理.是統一操作,一次將所有數組相同位置都操作一遍,而不是逐一操作. 因此該函數所接受的參數個數,與所傳遞的數組的數量應該一致.有一個默認操作,非常常用,利用多個數組,組合成一個新數組。要求,函數位置傳遞一個null.

$names = array(’z1’, ’z2’, ’z3’);$maths = array(50, 40, 60);$score = array_map(null, $names, $maths);var_dump($score);

回調函數的使用-模擬數據結構函數-排序函數

array_walk($funcname); 針對一個數組的每個元素進行操作,與array_map的不同點.

array_map() 可以操作多個數組,而array_walk(); 只可以操作一個數組.

array_map(); 只可以得到元素值,而array_walk(); 即可以得到元素值,還可以得到元素的鍵.

可以對函數的第一個參數進行引用傳遞,達到修改的原有數組的目的.

$names = array(’aa’, ’bb’, ’cc’);function fn1 ( &$val,$key ) { var_dump($val,$key);}array_walk($names, ’fn1’);模擬數據結構

入棧 array_push();出棧 array_pop();// 每次操作后,索引都會重新索引.

頂端出: array_shift();頂端入: array_unshift();

排序函數

soft(); 按照值升序rsoft() 按照值降序ksoft()按照鍵升序krsoft(); 按照鍵降序 // 值排序,不會保留鍵值關系,而鍵排序會保留鍵值關系.// 按照值排序,同時保留鍵值關系.

asort(); 按照值,升序,保留鍵值關聯.arsort(); 按照值,降序,保留鍵值關聯.

key,鍵reverse(): 反序,默認是升序.association: 關聯

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》、《php字符串(string)用法總結》、《php常用函數與技巧總結》、《PHP錯誤與異常處理方法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品久久久久久久成人热| 日韩一区网站| 国产资源在线观看入口av| 91精品国产经典在线观看| 69堂免费精品视频在线播放| 国产精选久久| 亚洲成人va| 热久久久久久| 夜久久久久久| 久久精品免费一区二区三区 | 免费成人性网站| 欧美韩日一区| 国语对白精品一区二区| 综合色一区二区| 亚洲女人av| 青草国产精品| 麻豆国产一区| 国产成人精品三级高清久久91| 精品伊人久久| 韩国三级一区| 亚洲综合欧美| 国产精品主播| 四虎精品一区二区免费| 日韩美女精品| 久久青草久久| 午夜久久tv| 日韩在线成人| 国产suv精品一区二区四区视频| 欧洲在线一区| 久久影视三级福利片| 精品高清久久| 久久黄色影视| 日本亚洲欧美天堂免费| 亚洲欧美激情诱惑| 9国产精品视频| 成人污污视频| 日韩精品91| 久久超碰99| 欧美一区影院| 国产欧美一区二区精品久久久| 日韩精品福利一区二区三区| 99视频精品视频高清免费| 91久久视频| 国产欧美日韩视频在线| 日本а中文在线天堂| | 色乱码一区二区三区网站| 欧美性感美女一区二区| 日韩国产一区二| 久久精品国产久精国产| 午夜欧美精品| 久久99精品久久久久久园产越南| 99精品小视频| 日日夜夜免费精品视频| 亚洲天堂资源| 日本国产欧美| 亚洲不卡av不卡一区二区| 综合亚洲自拍| 国产成人精品三级高清久久91| 欧美日韩国产欧| 欧美极品一区二区三区| 蜜臀91精品国产高清在线观看| 欧美天堂一区二区| 免费欧美一区| 久久中文字幕一区二区三区| 亚洲激情欧美| 国产中文欧美日韩在线| 视频一区在线播放| 国产va在线视频| 亚州av一区| 99久精品视频在线观看视频| 7777精品| 亚洲综合二区| 精品美女视频 | 在线观看精品| 国产精品亚洲人成在99www| 婷婷亚洲综合| 国产一区二区三区久久久久久久久| 视频一区中文字幕国产| 久久久久久免费视频| 老司机免费视频一区二区| 在线国产精品一区| 91久久久精品国产| 精品欧美视频| 一二三区精品| 免费av一区| 亚洲最新无码中文字幕久久| 日韩在线观看一区二区三区| 亚洲网站视频| 日韩电影二区| 久久99蜜桃| 日本va欧美va瓶| 国产精品毛片一区二区三区| 日韩国产欧美| 美女视频黄久久| 日本精品另类| 首页亚洲欧美制服丝腿| 婷婷综合五月| 日韩精品一区二区三区免费观看| 91午夜精品| 中文一区一区三区免费在线观 | 中国女人久久久| 午夜精品一区二区三区国产| 午夜av不卡| 精品久久不卡| 精品视频网站| 国产精品久久久网站| 日韩成人在线看| 日韩在线观看中文字幕| 日欧美一区二区| 综合亚洲色图| 日韩欧美2区| 日精品一区二区三区| 人人爽香蕉精品| 亚洲伊人精品酒店| 中文字幕日韩亚洲| 日韩国产在线一| 91亚洲精品在看在线观看高清| 日韩欧美三区| 国产日韩欧美一区二区三区 | 五月天激情综合网| 午夜av一区| 亚洲精品2区| 国产亚洲福利| 免费人成在线不卡| 亚洲18在线| 亚州av一区| 国产欧美丝祙| 国产一区2区在线观看| 麻豆视频在线观看免费网站黄 | 成人亚洲一区| 韩国女主播一区二区三区| 久久亚洲人体| 鲁鲁在线中文| 日韩精品免费一区二区三区| 欧美亚洲在线日韩| 久久国产精品毛片| 91嫩草精品| 老色鬼精品视频在线观看播放| 日韩av自拍| 一区二区三区视频免费观看 | 亚州av乱码久久精品蜜桃| 亚洲欧洲一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲婷婷丁香| 久久国产尿小便嘘嘘| 精品亚洲a∨| 久久中文字幕av| 最新国产精品视频| 国产福利一区二区三区在线播放| 中文字幕在线视频网站| 激情综合自拍| 综合欧美精品| 国产精品久久久久9999高清| 国产成人a视频高清在线观看| 99久久亚洲精品蜜臀| 在线精品福利| 国产精品一国产精品k频道56| 精品视频97| 欧美国产91| 天堂久久av| 四虎8848精品成人免费网站| 欧美日韩国产免费观看视频| 亚洲精品影视| 国产精品福利在线观看播放| 视频一区中文| 欧美一区激情| 秋霞影视一区二区三区| 丝袜美腿亚洲一区| 欧美精品成人| 欧美日韩激情在线一区二区三区| 日韩精品一区第一页| 国产精品手机在线播放| 日韩不卡视频在线观看| 免费成人性网站| 成人在线免费观看91| 99视频精品免费观看| 国产精品中文| 欧美福利在线| 国产精品主播| 好看的av在线不卡观看| 国产亚洲字幕| 999视频精品| 7777精品| 狠狠久久婷婷| 嫩呦国产一区二区三区av| 午夜国产一区二区| 欧美日本二区| 婷婷成人基地| 国产精品男女| 91九色精品国产一区二区| 国产精品高清一区二区| 国产精品腿扒开做爽爽爽挤奶网站| 麻豆成人91精品二区三区| 最新亚洲一区| 伊人久久国产| 国产亚洲精aa在线看| 午夜久久一区| 中文字幕在线视频网站| 国产欧美日韩一级|