一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 關于PHP數組迭代器的使用方法實例

關于PHP數組迭代器的使用方法實例

2021-11-26 15:13風柏楊 PHP教程

在PHP的日常操作中,數組是最常出現的結構,而我們幾乎每天都在處理數組相關的內容,這篇文章主要給大家介紹了關于PHP數組迭代器的使用方法,需要的朋友可以參考下

近來在開發一個視力篩查電子報告系統的產品,這個產品的作用是自動提取視力篩查過程中得到的屈光檢查數據,并結合數據自動生成通俗易懂且專業的電子報告,以方便家長可以通過公眾號或h5鏈接查閱。

要實現這個需求,第一步是對驗光設備里打印出來的紙質報告做ocr,圖片識別接口返回的是二維數組,報告的原圖是這樣的:

關于PHP數組迭代器的使用方法實例

ocr接口返回的數據是這樣的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
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)
}

而系統的需求是提取兩個號后面的兩個數字,那肯定是對上述數組做遍歷處理,然后遇到號便提取接下來的兩個元素,但在foreach里面,如果做標記,等下次進來時再提取數據比較麻煩,能不能在遇到*號字符串后,直接提取接下來的兩個字符串呢,這時我的腦海里出現了迭代器的概念,可能是之前用python或java開發時接觸到的吧,于是搜索了一下,果然php也是有迭代器的!!!

接下來簡單看了一下php文檔中的示例,就開始干了,很順利,5分鐘完工,下面把代碼貼出來并輔以簡單的注釋幫助大家理解:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$usefulnumlist = [];
$wordsresult = new \arrayiterator($wordsresult);//初始化數組迭代器,傳入數組變量
foreach($wordsresult as $item){
    $tempwords = $item['words'];
    if(strpos($tempwords, '*') !== false){
        if($tempwords === '*'){//有時候,*號會單獨識別成一個字符串,有時候會和后面的數字識別到一起,如果是單獨識別出來的,要把指針向后挪一位
            $wordsresult->next();//實現方法是: 數組變更名->next()方法
        }
       //注意,調用了next()方法后,不能再用$item去取數組元素值,要用current()方法才能取到"下一個值"
       array_push($usefulnumlist, $this->getcleannum($wordsresult->current()['words']));
       $wordsresult->next();
       array_push($usefulnumlist, $this->getcleannum($wordsresult->current()['words']));
    }
}

需注意的地方請看一下代碼注釋,本身封裝得很好,很容易理解和調用的

總結

到此這篇關于php數組迭代器的使用方法的文章就介紹到這了,更多相關php數組迭代器使用內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/one_and_only4711/article/details/121124381

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品视频久久久久 | 天色综合| 女同性互吃奶乳免费视频 | 日本高清在线不卡 | 91po国产在线高清福利 | www.色香蕉| 国产亚洲欧美一区二区三区 | 无限在线观看免费入口 | 狠狠澡| 国产午夜精品久久久久 | 亚洲一区二区日韩欧美gif | juliaann大战黑人 | 波多洁野衣一二区三区 | 亚洲大片免费看 | 高清视频在线播放 | 岛国不卡 | 蜜柚精彩在线观看 | 美国复古性经典xxxxx | 国产在线观看91精品一区 | 狠狠香蕉| 欧美国产日产精品免费视频 | 男女男精品视频网站 | 美女插插视频 | 久久性生大片免费观看性 | x8x8国产在线观看2021 | 久久99热成人精品国产 | ipx 在线播放 | 日本色吧 | 朝鲜女人free性xxe | 羞羞麻豆国产精品1区2区3区 | 国产精品合集一区二区 | 亚洲天堂成人在线观看 | 精品久久香蕉国产线看观看麻豆 | 久久日韩精品无码一区 | 国产一区二区三区四卡 | 男人晚上看的 | 成人性爱视频在线观看 | 欧美综合色网 | 图片专区小说专区卡通动漫 | 精品国产自在现线拍国语 | 日韩视频第二页 |