PHP の配列イテレータの使用例
本製品の目的は、視力検査の過程で屈折データを自動的に抽出し、そのデータを組み合わせて、保護者が公共のウェブサイトやH5リンクからアクセスできる、わかりやすく専門的な電子報告書を自動的に作成することです。
この要求を実現するために、まず検眼装置からプリントアウトされた紙の報告書にOCRをかけることにしました。画像認識インターフェースは2次元の配列を返し、レポートのオリジナル画像は次のようになります。
OCR インターフェースから返されるデータは、次のようになります。
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)
}
そして、システムは2つの数字の後に2つの数字を抽出する必要があり、それは確かに反復処理を行うために、上記の配列であり、その後、番号が次の2つの要素を抽出しますが、内部foreachで、あなたがマークを行う場合など、次の時間は、データよりトラブルを抽出しに来ています。出会い*番号の文字列にすることはできませんが、直接それを次の2つの文字列を抽出し、この時間は私の心はイテレータの概念が登場これはイテレータの概念が私の心に来たとき、おそらく以前の接触からパイソンやJavaの開発、私はそれを検索し、確かにPHPもイテレータを持っています!私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、私はそれを見て、あなたはそれを見ることができます。
次に、PHPのドキュメントにある例を簡単に見てから、やり始めると、非常にスムーズに、5分で完成、以下のコードを掲載し、分かりやすいように簡単なコメントを補足しています。
$usefulNumList = [];
$wordsResult = new \ArrayIterator($wordsResult);//initialize the array iterator, passing in the array variables
foreach($wordsResult as $item){
$tempWords = $item['words'];
if(strpos($tempWords, '*') ! == false){
if($tempWords === '*'){/sometimes, the * sign will be identified as a separate string, sometimes it will be identified with the number after it, if it is identified separately, move the pointer back one position
$wordsResult->next();//Implementation method is: array change name->next() method
}
//Note that after calling the next() method, you can no longer use $item to get the array element values, you have to use the current() method to get the "next value"
array_push($usefulNumList, $this->getCleanNum($wordsResult->current()['words'])));
$wordsResult->next();
array_push($usefulNumList, $this->getCleanNum($wordsResult->current()['words'])));
}
}
コードコメントをご覧ください。非常によくまとまっていて、理解しやすく、呼び出しも簡単です
概要
PHPの配列イテレータの使い方についての記事です。PHPの配列イテレータの使い方については、スクリプトハウスの過去記事を検索するか、以下の記事を引き続き閲覧してください。
関連
-
phpでwordを修正する例
-
phpで配列から0個の要素を削除する例
-
php pngの歪みの原因と解決策
-
web php include 攻撃と防御 世界のphp セキュリティ 例 詳細
-
phpのクラスのオートロードの失敗の解決策とサンプルコード
-
PHPにおける=>と->と::記号の使用法
-
PHP クラス self と static の類似点と相違点、使い方の詳細
-
php array_walk array_map array_filter 差分ケーススタディ
-
配列の要素が空白でないかどうかを判断する PHP のサンプルコード
-
php curl return error code 60 解決方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン