亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于PHP數(shù)組迭代器的使用方法實(shí)例

 更新時(shí)間:2021年11月05日 09:36:16   作者:風(fēng)柏楊  
在PHP的日常操作中,數(shù)組是最常出現(xiàn)的結(jié)構(gòu),而我們幾乎每天都在處理數(shù)組相關(guān)的內(nèi)容,這篇文章主要給大家介紹了關(guān)于PHP數(shù)組迭代器的使用方法,需要的朋友可以參考下

近來(lái)在開(kāi)發(fā)一個(gè)視力篩查電子報(bào)告系統(tǒng)的產(chǎn)品,這個(gè)產(chǎn)品的作用是自動(dòng)提取視力篩查過(guò)程中得到的屈光檢查數(shù)據(jù),并結(jié)合數(shù)據(jù)自動(dòng)生成通俗易懂且專業(yè)的電子報(bào)告,以方便家長(zhǎng)可以通過(guò)公眾號(hào)或H5鏈接查閱。

要實(shí)現(xiàn)這個(gè)需求,第一步是對(duì)驗(yàn)光設(shè)備里打印出來(lái)的紙質(zhì)報(bào)告做OCR,圖片識(shí)別接口返回的是二維數(shù)組,報(bào)告的原圖是這樣的:

OCR接口返回的數(shù)據(jù)是這樣的

array(3) {
  ["words_result"]=>
  array(36) {
    [0]=>
    array(1) {
      ["words"]=>
      string(8) "FA-6000A"
    }
    [1]=>
    array(1) {
      ["words"]=>
      string(10) "2022-09-16"
    }
    [2]=>
    array(1) {
      ["words"]=>
      string(7) "04:00"
    }
    [3]=>
    array(1) {
      ["words"]=>
      string(8) "SHOP:B"
    }
    [4]=>
    array(1) {
      ["words"]=>
      string(7) "NAME:"
    }
    [5]=>
    array(1) {
      ["words"]=>
      string(3) "<R>"
    }
    [6]=>
    array(1) {
      ["words"]=>
      string(1) "C"
    }
    [7]=>
    array(1) {
      ["words"]=>
      string(1) "A"
    }
    [8]=>
    array(1) {
      ["words"]=>
      string(5) "-1.50"
    }
    [9]=>
    array(1) {
      ["words"]=>
      string(5) "-0.25"
    }
    [10]=>
    array(1) {
      ["words"]=>
      string(3) "131"
    }
    [11]=>
    array(1) {
      ["words"]=>
      string(5) "-1.50"
    }
    [12]=>
    array(1) {
      ["words"]=>
      string(7) "-0,25"
    }
    [13]=>
    array(1) {
      ["words"]=>
      string(3) "122"
    }
    [14]=>
    array(1) {
      ["words"]=>
      string(7) "-1,50"
    }
    [15]=>
    array(1) {
      ["words"]=>
      string(7) "-0,25"
    }
    [16]=>
    array(1) {
      ["words"]=>
      string(3) "114"
    }
    [17]=>
    array(1) {
      ["words"]=>
      string(5) "-1.50"
    }
    [18]=>
    array(1) {
      ["words"]=>
      string(7) "-0,25"
    }
    [19]=>
    array(1) {
      ["words"]=>
      string(3) "122"
    }
    [20]=>
    array(1) {
      ["words"]=>
      string(3) "<L>"
    }
    [21]=>
    array(1) {
      ["words"]=>
      string(1) "C"
    }
    [22]=>
    array(1) {
      ["words"]=>
      string(1) "A"
    }
    [23]=>
    array(1) {
      ["words"]=>
      string(5) "-1.50"
    }
    [24]=>
    array(1) {
      ["words"]=>
      string(4) "+0.0"
    }
    [25]=>
    array(1) {
      ["words"]=>
      string(5) "-1.25"
    }
    [26]=>
    array(1) {
      ["words"]=>
      string(7) "-0,25"
    }
    [27]=>
    array(1) {
      ["words"]=>
      string(3) "158"
    }
    [28]=>
    array(1) {
      ["words"]=>
      string(5) "-1.00"
    }
    [29]=>
    array(1) {
      ["words"]=>
      string(5) "-0.25"
    }
    [30]=>
    array(1) {
      ["words"]=>
      string(3) "100"
    }
    [31]=>
    array(1) {
      ["words"]=>
      string(1) "*"
    }
    [32]=>
    array(1) {
      ["words"]=>
      string(5) "-1.25"
    }
    [33]=>
    array(1) {
      ["words"]=>
      string(4) "+0.0"
    }
    [34]=>
    array(1) {
      ["words"]=>
      string(5) "U0=12"
    }
    [35]=>
    array(1) {
      ["words"]=>
      string(5) "PD=58"
    }
  }
  ["words_result_num"]=>
  int(36)
  ["log_id"]=>
  int(1455742838110100386)
}

而系統(tǒng)的需求是提取兩個(gè)號(hào)后面的兩個(gè)數(shù)字,那肯定是對(duì)上述數(shù)組做遍歷處理,然后遇到號(hào)便提取接下來(lái)的兩個(gè)元素,但在foreach里面,如果做標(biāo)記,等下次進(jìn)來(lái)時(shí)再提取數(shù)據(jù)比較麻煩,能不能在遇到*號(hào)字符串后,直接提取接下來(lái)的兩個(gè)字符串呢,這時(shí)我的腦海里出現(xiàn)了迭代器的概念,可能是之前用python或java開(kāi)發(fā)時(shí)接觸到的吧,于是搜索了一下,果然PHP也是有迭代器的?。?!

接下來(lái)簡(jiǎn)單看了一下PHP文檔中的示例,就開(kāi)始干了,很順利,5分鐘完工,下面把代碼貼出來(lái)并輔以簡(jiǎn)單的注釋幫助大家理解:

$usefulNumList = [];
$wordsResult = new \ArrayIterator($wordsResult);//初始化數(shù)組迭代器,傳入數(shù)組變量
foreach($wordsResult as $item){
	$tempWords = $item['words'];
    if(strpos($tempWords, '*') !== false){
	    if($tempWords === '*'){//有時(shí)候,*號(hào)會(huì)單獨(dú)識(shí)別成一個(gè)字符串,有時(shí)候會(huì)和后面的數(shù)字識(shí)別到一起,如果是單獨(dú)識(shí)別出來(lái)的,要把指針向后挪一位
        	$wordsResult->next();//實(shí)現(xiàn)方法是: 數(shù)組變更名->next()方法
        }
       //注意,調(diào)用了next()方法后,不能再用$item去取數(shù)組元素值,要用current()方法才能取到"下一個(gè)值"
       array_push($usefulNumList, $this->getCleanNum($wordsResult->current()['words']));
       $wordsResult->next();
       array_push($usefulNumList, $this->getCleanNum($wordsResult->current()['words']));
    }
}

需注意的地方請(qǐng)看一下代碼注釋,本身封裝得很好,很容易理解和調(diào)用的

總結(jié)

到此這篇關(guān)于PHP數(shù)組迭代器的使用方法的文章就介紹到這了,更多相關(guān)PHP數(shù)組迭代器使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論