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

时间:2015-07-13 19:28:08

标签: php arrays loops

我正在循环浏览大约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.如果是..
-Left证明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...

任何帮助收紧/加快这一点的人都将不胜感激。我确定有三种方法可以做到这一点,我还没想到它!

1 个答案:

答案 0 :(得分:0)

如果每辆车的信息需要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";}
}