国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁(yè) > 技術(shù) > IOS開(kāi)發(fā)

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

IOS開(kāi)發(fā) 2023-02-16 22:21:56

近來(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)告的原圖是這樣的:

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

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) ""
    }
    [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) ""
    }
    [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)了迭代器的概念,可能是之前用Pythonjava開(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)文章希望大家以后多多支持腳本之家!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號(hào):國(guó)作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來(lái)源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請(qǐng)注明來(lái)源,商業(yè)媒體及紙媒請(qǐng)先聯(lián)系:aishangyiwan@126.com

工信部備案號(hào):湘ICP備19012813號(hào)-5