近來在開發(fā)一個視力篩查電子報告系統(tǒng)的產(chǎn)品,這個產(chǎn)品的作用是自動提取視力篩查過程中得到的屈光檢查數(shù)據(jù),并結(jié)合數(shù)據(jù)自動生成通俗易懂且專業(yè)的電子報告,以方便家長可以通過公眾號或h5鏈接查閱。
要實(shí)現(xiàn)這個需求,第一步是對驗(yàn)光設(shè)備里打印出來的紙質(zhì)報告做ocr,圖片識別接口返回的是二維數(shù)組,報告的原圖是這樣的:
ocr接口返回的數(shù)據(jù)是這樣的
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) } |
而系統(tǒng)的需求是提取兩個號后面的兩個數(shù)字,那肯定是對上述數(shù)組做遍歷處理,然后遇到號便提取接下來的兩個元素,但在foreach里面,如果做標(biāo)記,等下次進(jìn)來時再提取數(shù)據(jù)比較麻煩,能不能在遇到*號字符串后,直接提取接下來的兩個字符串呢,這時我的腦海里出現(xiàn)了迭代器的概念,可能是之前用python或java開發(fā)時接觸到的吧,于是搜索了一下,果然php也是有迭代器的!!!
接下來簡單看了一下php文檔中的示例,就開始干了,很順利,5分鐘完工,下面把代碼貼出來并輔以簡單的注釋幫助大家理解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$usefulnumlist = []; $wordsresult = new \arrayiterator( $wordsresult ); //初始化數(shù)組迭代器,傳入數(shù)組變量 foreach ( $wordsresult as $item ){ $tempwords = $item [ 'words' ]; if ( strpos ( $tempwords , '*' ) !== false){ if ( $tempwords === '*' ){ //有時候,*號會單獨(dú)識別成一個字符串,有時候會和后面的數(shù)字識別到一起,如果是單獨(dú)識別出來的,要把指針向后挪一位 $wordsresult ->next(); //實(shí)現(xiàn)方法是: 數(shù)組變更名->next()方法 } //注意,調(diào)用了next()方法后,不能再用$item去取數(shù)組元素值,要用current()方法才能取到"下一個值" array_push ( $usefulnumlist , $this ->getcleannum( $wordsresult ->current()[ 'words' ])); $wordsresult ->next(); array_push ( $usefulnumlist , $this ->getcleannum( $wordsresult ->current()[ 'words' ])); } } |
需注意的地方請看一下代碼注釋,本身封裝得很好,很容易理解和調(diào)用的
總結(jié)
到此這篇關(guān)于php數(shù)組迭代器的使用方法的文章就介紹到這了,更多相關(guān)php數(shù)組迭代器使用內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/one_and_only4711/article/details/121124381