首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要一种更优雅的方法来测试和循环数组

我需要一种更优雅的方法来测试和循环数组
EN

Stack Overflow用户
提问于 2015-07-14 03:28:08
回答 1查看 44关注 0票数 0

我遍历了大约40,000条记录,并在找到匹配项时打印车辆信息。一条记录至少有一个车辆,由7个元素组成。不过,它总共可能有多达16辆汽车。16辆车中的任何一辆都可能有一个不完整或空白的车辆识别号(这是最后一个元素),在这种情况下,我不想使用它。因此,我首先测试元素6、13、20、27,以确保有东西在那里,然后测试它不只是空格。

我是PHP新手,正如我的代码所示。我下面的方法是有效的,尽管它很长,很麻烦,而且似乎花费的时间比它应该花的时间要长得多。

数组可能如下所示:

代码语言:javascript
复制
[0] => VEHICLE1
[1] => 1995
[2] => FORD
[3] => XL
[4] => WHITE
[5] => MD
[6] => 1GNEK714XXXXXXX
[7] => VEHICLE2
[8] => 1999
[9] => FORD
[10] => F-150XLT (HAS THIRD DOOR ON PASSENGER SIDE)
[11] => TEAL (GREEN)
[12] => MD
[13] => 

我的逻辑是:

-Test最后一个元素以确保有车辆ID号,如果是..

-Make确保车辆ID大于0。如果是..

-Left将车辆识别码和填充物对齐到20个字符,

-Print车辆信息(年份、制造商、型号、颜色)

代码语言:javascript
复制
// VEHICLE 1
if(isset($vehicle_info[1][6]) && strlen($vehicle_info[1][6])>0){
print str_pad($vehicle_info[1][6], 20).$vehicle_info[1][5]."#8";
print "$details {$vehicle_info[1][1]}     
{$vehicle_info[1][2]} {$vehicle_info[1][3]} {$vehicle_info[1][4]}  \r\n";}

// VEHICLE 2
if(isset($vehicle_info[1][13]) && strlen($vehicle_info[1][13])>0){
print str_pad($vehicle_info[1][13], 20).$vehicle_info[1][12]."#8";
print "$details {$vehicle_info[1][8]}}
{$vehicle_info[1][9]} {$vehicle_info[1][10]} {$vehicle_info[1][11]}\r\n"}

...and so on, 14 more times...

任何帮助收紧/加速这一点的人都将不胜感激。我确信有一种方法可以用3行代码来完成,我只是还没有弄明白而已!

EN

回答 1

Stack Overflow用户

发布于 2015-07-14 03:42:22

如果每辆车的信息需要7项数组,请使用array_chunk并处理部件

代码语言:javascript
复制
$vehicles = array_chunk($vehicle_info[1], 7);

foreach ($vehicles as $vehicle) {
   if(isset($vehicle[6]) && strlen($vehicle[6])>0){
   print str_pad($vehicle[6], 20).$vehicle[5]."#8";
   print "$details {$vehicle[1]}     
   {$vehicle[2]} {$vehicle[3]} {$vehicle[4]}  \r\n";}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31391806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档