PHP数组迭代器的使用是什么样的
Admin 2022-10-19 群英技术资讯 769 次浏览
很多朋友都对“PHP数组迭代器的使用是什么样的”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!近来在开发一个视力筛查电子报告系统的产品,这个产品的作用是自动提取视力筛查过程中得到的屈光检查数据,并结合数据自动生成通俗易懂且专业的电子报告,以方便家长可以通过公众号或h5链接查阅。
要实现这个需求,第一步是对验光设备里打印出来的纸质报告做ocr,图片识别接口返回的是二维数组,报告的原图是这样的:

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) } |
而系统的需求是提取两个号后面的两个数字,那肯定是对上述数组做遍历处理,然后遇到号便提取接下来的两个元素,但在foreach里面,如果做标记,等下次进来时再提取数据比较麻烦,能不能在遇到*号字符串后,直接提取接下来的两个字符串呢,这时我的脑海里出现了迭代器的概念,可能是之前用python或java开发时接触到的吧,于是搜索了一下,果然php也是有迭代器的!!!
接下来简单看了一下php文档中的示例,就开始干了,很顺利,5分钟完工,下面把代码贴出来并辅以简单的注释帮助大家理解:
$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数组迭代器的使用是什么样的”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。如果想要学习更多的相关知识,欢迎关注群英网络,小编每天都会给大家分享实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
tp5框架的路由原理是什么?很多新手对于路由不是很清楚,下面小编就大家通俗化的介绍一下,对tp5框架的路由原理和用法感兴趣的朋友可以看看这篇,下面就跟随小编一起来看看吧。
本篇文章小编给大家分享一下golang防缓存击穿singleflight代码实现方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
在前面我们了解了应该怎样去绘制图形验证码,那接下来我们一起看一看,在PHP中想要实现图像的缩放和裁剪应该怎样操作。不过在了解图像的缩放和裁剪之前我们先来认识一下下面这两个函数:
php正则替换函数的整理:1、preg_filter函数用于执行一个正则表达式搜索和替换。2、preg_replace_callback函数执行一个正则表达式搜索并且使用一个回调进行替换。
swoole安装:1、PECL安装,先使用“apt-get install libpcre3 libpcre3-dev”命令安装依赖包。2、使用“pecl install swoole”命令安装swoole。3、修改PHP配置php.in。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008