亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 29
粉絲 1
評(píng)論 0
訪問(wèn)量 30620
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
php數(shù)組查詢替換,排序,棧與隊(duì)列,迭代
阿心
原創(chuàng)
946人瀏覽過(guò)

數(shù)組統(tǒng)計(jì)

  1. <?php
  2. //count統(tǒng)計(jì)數(shù)組成員數(shù)量(count不單可以統(tǒng)計(jì)數(shù)組,還可以統(tǒng)計(jì)很多東西)
  3. $arr=[1,2,3,4,5,6,7,8,9,1,1];
  4. echo count($arr);
  5. // for($i=0;$i<=count($arr);$i++){
  6. // echo ($i+1),'<br>';
  7. // }
  8. echo '<hr>';
  9. //array_count_values — 統(tǒng)計(jì)數(shù)組中所有的值出現(xiàn)的次數(shù)(聽(tīng)其名知其意‘?dāng)?shù)組_統(tǒng)計(jì)_值’)
  10. printf('<pre>%s</pre>',print_r(array_count_values($arr),true));
  11. //結(jié)果為1值=3次
  12. //如果需要進(jìn)行數(shù)組計(jì)算,下面出現(xiàn)兩個(gè)字符串,php7將解析為0.
  13. $arr=[1,2,3,'php7','7php',5,8];
  14. //array_sum為數(shù)組相加求和
  15. //array_product為數(shù)組相乘求積
  16. echo array_sum($arr).'===='.array_product($arr);

棧與隊(duì)列

  1. <?php
  2. // 棧與隊(duì)列
  3. // 棧: 后進(jìn)先出, 最后進(jìn)入的最先出來(lái), LIFO, 添加與刪除受限,只允許在一端進(jìn)行
  4. // 隊(duì)列: 先進(jìn)先出, 最先插入的數(shù)據(jù)最先出來(lái), FIFO, 添加與刪除允許在二端進(jìn)行
  5. //1,棧:尾部添加/刪除
  6. $i='php';
  7. $v=[66,55,33];
  8. $stack=['name','email'];
  9. //array_push — 將一個(gè)或多個(gè)單元壓入數(shù)組的末尾(入棧)
  10. array_push($stack,$i,$v);//后添加后打印
  11. printf('<pre>%s</pre>',print_r($stack,true));
  12. //array_pop返回出棧的元素
  13. //array_pop — 將數(shù)組最后一個(gè)單元彈出(出棧)
  14. //簡(jiǎn)單的說(shuō)就是把最后條添加的數(shù)組給刪掉。
  15. array_pop($stack);
  16. //結(jié)果是$v不會(huì)被打印出來(lái)
  17. printf('<pre>%s</pre>',print_r($stack,true));
  18. echo '<hr>';
  19. //2,棧:頭部刪除/修改
  20. //array_unshift — 在數(shù)組開(kāi)頭插入一個(gè)或多個(gè)單元
  21. //原理同上,只是位置發(fā)生了變化。
  22. array_unshift($stack,$i,$v);//后添加先打印
  23. printf('<pre>%s</pre>',print_r($stack,true));
  24. //返回元素array_shift(同上返回一樣)
  25. array_shift($stack);
  26. printf('<pre>%s<pre>',print_r($stack,true));
  27. echo '<hr>';
  28. //隊(duì)列操作(就是棧操作的結(jié)合)
  29. //尾進(jìn)+頭出(array_push + array_shift)
  30. //這里需要注意的是:添加的東西按順序排列
  31. $i='name';
  32. $v='NET2.0';
  33. $queue=['php',100];
  34. array_push($queue,$i,$v);
  35. //需要輸出則是一個(gè)一個(gè)echo輸出
  36. echo array_shift($queue);
  37. //printf('<pre>%s</pre>',print_r($queue,true));
  38. echo '<br>';
  39. //頭進(jìn) + 尾出 (array_pop + array_unshift)原理同上。只是換了位置
  40. array_unshift($queue,$i,$v);
  41. echo array_pop($queue);

排序

  1. <?php
  2. //排序
  3. $arr=[10,20,'PHP','100','百度',10=>'html',30,'7php','7html','NET2'];
  4. //先打印原看看他的數(shù)組
  5. printf('<pre>%s</pre>',print_r($arr,true));
  6. //開(kāi)始:
  7. //1,升序(說(shuō)明:從小排到大。如果出現(xiàn)字符串和數(shù)字同時(shí)出現(xiàn),會(huì)先排字符串,原因是字符串解析成數(shù)字是0.同時(shí)重置“鍵”的值)
  8. //sort — 對(duì)數(shù)組排序(重置索引)
  9. sort($arr);
  10. printf('<pre>%s</pre>',print_r($arr,true));
  11. $arr=[10,20,'PHP','100','百度',10=>'html',30,'7php','7html','NET2'];
  12. //asort();(索引不變)!a=asoc
  13. asort($arr);
  14. printf('<pre>%s</pre>',print_r($arr,true));
  15. echo '<hr>';
  16. //2,降序(原理同上取反)
  17. rsort($arr);//重置索引
  18. arsort($arr);//索引不變
  19. echo '<p>鍵名排序</p>';
  20. //鍵名排序
  21. $arr=[7=>10,20,'PHP','100','百度',10=>'html',30,'7php','7html',3=>'NET2'];
  22. //ksort — 對(duì)數(shù)組按照鍵名排序(鍵名升序)
  23. ksort($arr);
  24. printf('<pre>%s</pre>',print_r($arr,true));
  25. //krsort 降序
  26. krsort($arr);
  27. printf('<pre>%s</pre>',print_r($arr,true));
  28. echo '<p>自定義值升序排序</p>';
  29. //usort — 使用用戶自定義的比較函數(shù)對(duì)數(shù)組中的值進(jìn)行排序
  30. $arr=[10,2,0,50,100,1.2];
  31. usort($arr,function($a,$b){
  32. //$a-$b表示,需要在數(shù)組中的“值”兩個(gè)兩個(gè)取出來(lái)進(jìn)行運(yùn)算。如果遇到非數(shù)字,則報(bào)錯(cuò)。
  33. //注意:運(yùn)算符是“-”
  34. return $a-$b;
  35. });
  36. printf('<pre>%s</pre>',print_r($arr,true));
  37. echo '<p>自定義值降序</p>';
  38. //自定義降序只需要把取出來(lái)的兩個(gè)值對(duì)調(diào)過(guò)來(lái)運(yùn)算即可。
  39. usort($arr,function($a,$b){
  40. return $b-$a;
  41. });
  42. printf('<pre>%s</pre>',print_r($arr,true));
  43. echo '<hr>';
  44. echo '<p>自然升序排序</p>';
  45. $arr=[10,2,0,'img31.png',50,'img22.png',100,1.2];
  46. natsort($arr);
  47. //也是由數(shù)組的值進(jìn)行排序的(索引不變)
  48. var_dump($arr);//打印結(jié)果
  49. printf('<pre>%s</pre>',print_r($arr,true));
  50. echo '<p>亂序(隨機(jī)排序)</p>';
  51. //shuffle — 將數(shù)組打亂
  52. //索引重置,值隨機(jī)排序
  53. shuffle($arr);
  54. printf('<pre>%s</pre>',print_r($arr,true));
  55. echo '<hr>';
  56. echo '<p>鍵和值交換排序</p>';
  57. //array_flip — 交換數(shù)組中的鍵和值
  58. //注意:array_flip():只能翻轉(zhuǎn)字符串和整數(shù)值!
  59. $arr=[10=>1,30=>2,'name'=>'admin','email'=>'123qq.com'];//這樣做是有問(wèn)題的。因?yàn)轭?lèi)型沒(méi)有統(tǒng)一
  60. // $arr=['name'=>'user','email'=>'123qq.com'];//沒(méi)問(wèn)題
  61. // $arr=['id'=>'y','total'=>'e'];
  62. //注意下面應(yīng)該是$arr=@array_flip()而不是跟上面那樣直接寫(xiě)了。
  63. $arr=@array_flip($arr);
  64. printf('<pre>%s</pre>',print_r($arr,true));

數(shù)組查詢與替換

  1. <?php
  2. //數(shù)組查詢與替換
  3. //array_slice — 從數(shù)組中取出一段
  4. //支持正數(shù)和負(fù)數(shù)。正數(shù)就是從左到右,負(fù)數(shù)就從右到左
  5. $arr=['id'=>10,'account'=>'admin','name'=>'管理員','password'=>'123456','qq'=>'123456','tel'=>'10010'];
  6. $res=array_slice($arr,0,2);
  7. //(1,-1)表示,從索引1開(kāi)始取,去除右邊的-1個(gè)索引的數(shù)值
  8. $res1=array_slice($arr,1,-1);
  9. //(-3,3)表示:從右邊-3的索引開(kāi)始取數(shù)組,取3位。
  10. $res2=array_slice($arr,-3,3);
  11. //echo $res,$res1;
  12. $arr1=print_r($res,true);
  13. $arr2=print_r($res1,true);
  14. $arr3=print_r($res2,true);
  15. //刪除,替換,添加數(shù)組成員array_splice()同樣支持負(fù)數(shù)
  16. //刪除
  17. $delete=array_splice($arr,-2,1);
  18. $delete1=print_r($delete,true);//輸出被刪除元素。
  19. //$delete1=print_r($arr,true);//除了別刪除元素,其他輸出
  20. //刪除替換。。可以刪除多個(gè)只替換一個(gè)。也是可以的
  21. $replace=array_splice($arr,1,3,['super','超級(jí)管理員']);
  22. $replace1=print_r($arr,true);
  23. //添加($arr,索引位置,0:表示,不刪除。['xx'=>xx]:表示從索引幾的位置開(kāi)始添加需要數(shù)據(jù)
  24. $add=array_splice($arr,-2,0,['email'=>'123qq.com']);
  25. $add1=print_r($arr,true);
  26. printf('<pre>%s%s%s<p>刪除,替換,添加數(shù)組</p>%s%s%s</pre>',$arr1,$arr2,$arr3,$delete1,$replace1,$add1);
  27. echo '<hr>';

數(shù)組元素回調(diào)處理

  1. <?php
  2. //數(shù)組元素回調(diào)處理(注意不能留空:就是不能有空格鍵,否則報(bào)錯(cuò))
  3. $arr=[10,'id'=>20,false,null,(new class{}),0,'','0',true];
  4. //array_filter — 用回調(diào)函數(shù)過(guò)濾數(shù)組中的單元
  5. //表示:過(guò)濾掉空數(shù)組,留下有值的數(shù)組
  6. //php自動(dòng)轉(zhuǎn)為false的值: null, false, 空數(shù)組, 空字符串, 0, '0'
  7. //可以這樣寫(xiě):
  8. //$res=array_filter($arr,function($item){
  9. // return $item;
  10. // });
  11. //這樣簡(jiǎn)寫(xiě):
  12. $res=array_filter($arr);
  13. //echo $res;
  14. $res1=print_r($res,true);
  15. //如果需要返回標(biāo)量:
  16. //is_scalar — 檢測(cè)變量是否是一個(gè)標(biāo)量
  17. //標(biāo)量:?jiǎn)沃底兞?。?shù)組和對(duì)象都不是單值變量
  18. $scalar=array_filter($arr,function($item){
  19. return is_scalar($item);
  20. });
  21. $scalar1=print_r($scalar,true);
  22. printf('<pre>%s<p>返回標(biāo)量</p>%s</pre>',$res1,$scalar1);
  23. echo '<hr>';
  24. $arr=['name',20,[1,2,3],(new class{public $Bname='小米';public $Price=3000;}),'purch'=>'立即購(gòu)買(mǎi)'];
  25. ////array_map — 將回調(diào)函數(shù)作用到給定數(shù)組的單元上
  26. $res=array_map(function($item){
  27. //拉平數(shù)組$item接受數(shù)據(jù)。gettype獲取變量類(lèi)型
  28. switch(gettype($item)){
  29. //get_object_vars — 返回由對(duì)象屬性組成的關(guān)聯(lián)數(shù)組
  30. case 'object':
  31. $item=get_object_vars($item);
  32. //implode — 將一個(gè)一維數(shù)組的值轉(zhuǎn)化為字符串
  33. case 'array':
  34. $item=implode($item);
  35. }
  36. return $item;
  37. },$arr);
  38. printf('<pre>%s</pre>',print_r($res,true));
  39. echo '<hr>';
  40. //array_map()同時(shí)處理多個(gè)數(shù)組
  41. $key=['host','root','password','db'];
  42. $val=['localhost','root','1231456','baidu'];
  43. //array_combine — 創(chuàng)建一個(gè)數(shù)組,用一個(gè)數(shù)組的值作為其鍵名,另一個(gè)數(shù)組的值作為其值
  44. $res =array_combine($key,$val);
  45. //echo $res;
  46. //$res1=print_r($res,true);
  47. printf('<pre>%s</pre>',print_r($res,true));
  48. echo '<hr>';
  49. $res=array_map(function($val1,$val2){
  50. return [$val1=>$val2];
  51. },$key,$val);
  52. printf('<pre>%s</pre>',print_r($res,true));
  53. echo $res[2]['password'];
  54. echo '<hr>';
  55. //array_reduce — 用回調(diào)函數(shù)迭代地將數(shù)組簡(jiǎn)化為單一的值
  56. $res=array_reduce($res,function($prev,$current){
  57. //獲取當(dāng)前元素“鍵”
  58. $key=key($current);
  59. //獲取“值”
  60. $val=current($current);
  61. //鍵和值拼裝
  62. $prev[$key]=$val;
  63. return $prev;
  64. });
  65. printf('<pre>%s</pre>',print_r($res,true));

總結(jié):上面的函數(shù)回調(diào)還能免強(qiáng)有點(diǎn)感覺(jué),迭代這里完全搞不懂,一點(diǎn)都沒(méi)看懂。

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語(yǔ):這種遞歸處理, 理解起來(lái)是有點(diǎn)難度, 一時(shí)難以理解正常, 我剛學(xué)的時(shí)候也和你一樣, 等以后接觸幾個(gè)實(shí)際應(yīng)用場(chǎng)景就好了
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)