繁体   English   中英

需要一种更优雅的方法来测试和遍历数组

[英]Need a more elegant way to test and loop through array

找到匹配项后,我将遍历约40,000条记录并打印车辆信息。 一条记录将至少有一辆车,它由7个元素组成。 不过,总共可能有16辆车。 这16辆车中的任何一辆都可能具有不完整或空白的车辆识别号(这是最后一个元素),在这种情况下,我不想使用它。 因此,我首先测试元素6、13、20、27,以确保其中存在某些内容,然后再不仅仅是空白。

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

数组可能如下所示:

[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] => 

我的逻辑是这样的:

-测试最后一个元素,以确保有车辆ID号(如果是)。
-确保车辆ID大于0。如果是。
-左对齐VIN并填充20个字符,
-打印车辆信息(年份,品牌,型号,颜色)

// 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种方法可以做到这一点,但我还没有弄清楚!

如果有关每辆车的信息需要7个数组,请使用array_chunk并处理零件

$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";}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM