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

歡迎訪問 生活随笔!

生活随笔

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

php

PHP 遍历数组的方法汇总

發(fā)布時間:2023/12/18 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 遍历数组的方法汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

From:?http://www.cnblogs.com/jamespb/archive/2011/09/01/2161673.html

1. foreach()

foreach()是一個用來遍歷數(shù)組中數(shù)據(jù)的最簡單有效的方法。

#example1:

  • <?php
  • $colors=?array('red','blue','green','yellow');
  • foreach?($colorsas$color){
  • echo?"Do you like?$color? <br />";
  • }
  • ?>

  • 顯示結(jié)果:

    Do you like red??
    Do you like blue??
    Do you like green??
    Do you like yellow?

    2. while()

    while() 通常和 list(),each()配合使用。

    #example2:

  • <?php
  • $colors=?array('red','blue','green','yellow');
  • while(list($key,$val)=?each($colors))?{
  • echo?"Other list of?$val.<br />";
  • }
  • ?>
  • 顯示結(jié)果:

    Other list of red.?
    Other list of blue.?
    Other list of green.?
    Other list of yellow.

    3. for()

    #example3:

  • <?php
  • $arr=?array?("0"=>?"zero","1"=>?"one","2"=>?"two");
  • for?($i=?0;$i<?count($arr);?$i++){
  • $str=?$arr[$i];
  • echo?"the number is?$str.<br />";
  • }
  • ?>
  • 顯示結(jié)果:

    the number is zero.?
    the number is one.?
    the number is two.

    ========= 以下是函數(shù)介紹 ==========

    key()

    mixed key(array input_array)

    key()函數(shù)返回input_array中位于當(dāng)前指針位置的鍵元素。

    #example4

  • <?php
  • $capitals=?array("Ohio"=>?"Columbus","Towa"=>?"Des Moines","Arizona"=>?"Phoenix");
  • echo?"<p>Can you name the capitals of these states?</p>";
  • while($key=?key($capitals))?{
  • echo?$key."<br />";
  • next($capitals);
  • //每個key()調(diào)用不會推進(jìn)指針。為此要使用next()函數(shù)
  • }
  • ?>
  • 顯示結(jié)果:

    Can you name the capitals of these states??
    Ohio?
    Towa?
    Arizona

    reset()

    mixed reset(array input_array)

    reset()函數(shù)用來將input_array的指針設(shè)置回數(shù)組的開始位置。如果需要在一個腳本中多次查看或處理同一個數(shù)組,就經(jīng)常使用這個函數(shù),另外這個函數(shù)還常用于排序結(jié)束時。

    #example5 - 在#example1上追加代碼

  • <?php
  • $colors=?array('red','blue','green','yellow');
  • foreach?($colorsas$color){
  • echo?"Do you like?$color? <br />";
  • }
  • reset($colors);
  • while(list($key,$val)=?each($colors))?{
  • echo?"$key=>?$val<br />";
  • }
  • ?>
  • 顯示結(jié)果:

    Do you like red??
    Do you like blue??
    Do you like green??
    Do you like yellow??
    0 => red?
    1 => blue?
    2 => green?
    3 => yellow

    注意:將一個數(shù)組賦值給另一個數(shù)組時會重置原來的數(shù)組指針,因此在上例中如果我們在循環(huán)內(nèi)部將 $colors 賦給了另一個變量的話將會導(dǎo)致無限循環(huán)。?
    例如將 $s1 = $colors; 添加到while循環(huán)內(nèi),再次執(zhí)行代碼,瀏覽器就會無休止地顯示結(jié)果。

    each()

    array each(array input_array)

    each()函數(shù)返回輸入數(shù)組當(dāng)前鍵/值對,并將指針推進(jìn)一個位置。返回的數(shù)組包含四個鍵,鍵0和key包含鍵名,而鍵1和value包含相應(yīng)的數(shù)據(jù)。如果執(zhí)行each()前指針位于數(shù)組末尾,則返回FALSE。

    #example6

  • <?php
  • $capitals=?array("Ohio"=>?"Columbus","Towa"=>?"Des Moines","Arizona"=>?"Phoenix");
  • $s1=?each($capitals);
  • print_r($s1);
  • ?>
  • 顯示結(jié)果:

    Array ( [1] => Columbus [value] => Columbus [0] => Ohio [key] => Ohio )

    current(),next(),prev(),end()

    mixed current(array target_array)

    current()函數(shù)返回位于target_array數(shù)組當(dāng)前指針位置的數(shù)組值。與next()、prev()、和end()函數(shù)不同,current()不移動指針。?
    next()函數(shù)返回緊接著放在當(dāng)前數(shù)組指針的下一個位置的數(shù)組值。?
    prev()函數(shù)返回位于當(dāng)前指針的前一個位置的數(shù)組值,如果指針本來就位于數(shù)組的第一個位置,則返回FALSE。?
    end()函數(shù)將指針移向target_array的最后一個位置,并返回最后一個元素。

    #example7

  • <?php
  • $fruits=?array("apple","orange","banana");
  • $fruit=?current($fruits);?//return "apple"
  • echo?$fruit."<br />";
  • $fruit=?next($fruits);?//return "orange"
  • echo?$fruit."<br />";
  • $fruit=?prev($fruits);?//return "apple"
  • echo?$fruit."<br />";
  • $fruit=?end($fruits);?//return "banana"
  • echo?$fruit."<br />";
  • ?>
  • 顯示結(jié)果:

    apple?
    orange?
    apple?
    banana

    =========== 下面來測試三種遍歷數(shù)組的速度 ===========

    一般情況下,遍歷一個數(shù)組有三種方法,for、while、foreach。其中最簡單方便的是foreach。下面先讓我們來測試一下共同遍歷一個有50000個下標(biāo)的一維數(shù)組所耗的時間。

    測試環(huán)境:?
    Intel Core Due2 2GHz?
    2GB 1067MHz DDR3?
    Mac OS X 10.5.7?
    Apache 2.0.59?
    MySQL 5.0.41?
    PHP 5.2.6

    #example8

  • <?php
  • $arr=?array();
  • for($i=?0;?$i<?50000;?$i++){
  • $arr[]=?$i*rand(1000,9999);
  • }
  • function?GetRunTime()
  • {
  • list($usec,$sec)=explode("?",microtime());
  • return?((float)$usec+(float)$sec);
  • }
  • ######################################
  • $time_start=?GetRunTime();
  • for($i=?0;?$i<?count($arr);?$i++){
  • $str=?$arr[$i];
  • }
  • $time_end=?GetRunTime();
  • $time_used=?$time_end-?$time_start;
  • echo?'Used time of for:'.round($time_used,?7).'(s)<br /><br />';
  • unset($str,?$time_start,?$time_end,?$time_used);
  • ######################################
  • $time_start=?GetRunTime();
  • while(list($key,?$val)=?each($arr)){
  • $str=?$val;
  • }
  • $time_end=?GetRunTime();
  • $time_used=?$time_end-?$time_start;
  • echo?'Used time of while:'.round($time_used,?7).'(s)<br /><br />';
  • unset($str,?$key,?$val,?$time_start,?$time_end,?$time_used);
  • ######################################
  • $time_start=?GetRunTime();
  • foreach($arr?as$key=>?$val){
  • $str=?$val;
  • }
  • $time_end=?GetRunTime();
  • $time_used=?$time_end-?$time_start;
  • echo?'Used time of foreach:'.round($time_used,?7).'(s)<br /><br />';
  • ?>
  • 測試結(jié)果:

    Used time of for:0.0228429(s)

    Used time of while:0.0544658(s)

    Used time of foreach:0.0085628(s)

    經(jīng)過反復(fù)多次測試,結(jié)果表明,對于遍歷同樣一個數(shù)組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數(shù)組副本進(jìn)行操作(通過拷貝數(shù)組),而while則通過移動數(shù)組內(nèi)部指標(biāo)進(jìn)行操作,一般邏輯下認(rèn)為,while應(yīng)該比foreach快(因為foreach在開始執(zhí)行的時候首先把數(shù)組復(fù)制進(jìn)去,而while直接移動內(nèi)部指標(biāo)。),但結(jié)果剛剛相反。原因應(yīng)該是,foreach是PHP內(nèi)部實現(xiàn),而while是通用的循環(huán)結(jié)構(gòu)。所以,在通常應(yīng)用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。

    轉(zhuǎn)載于:https://www.cnblogs.com/joeblackzqq/p/4428280.html

    總結(jié)

    以上是生活随笔為你收集整理的PHP 遍历数组的方法汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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