2017-08-15 38 views
0

我正在使用数组来选择Excel中的列。现在我需要ACZ,但它可能需要在未来扩展到更大的集合。我希望有人比我现在做的更快或更好。将Excel列标题设置为PHP中的数组的快速方法

这是我现在在做什么:

$ColumnArray2 = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); 
$ColumnArray = array(); 
for($x = 0 ; $x <= 25 ; $x++) 
{ 
    $ColumnArray[] = $ColumnArray2[$x]; 
} 
for($x = 0 ; $x <= 4 ; $x++) 
{ 
    for($y = 0 ; $y <= 25 ; $y++) 
    { 
     $ColumnArray[] = $ColumnArray2[$x].$ColumnArray2[$y]; 
    } 
} 

这给了我155个值的数组会从AEZ

有没有更好的方法来实现这个目标?

回答

2

你知不知道PHP支持perl-style incrementing of characters,这意味着你可以这样做:

$startColumn = 'A'; 
$endColumn = 'CZ'; 
++$endColumn; 

$ColumnArray = []; 
for($column = $startColumn; $column != $endColumn; ++$column) { 
    $ColumnArray[] = $column; 
} 

要留意的唯一事情是结束条件不能使用<>,所以我们递增实际的结束,并使用!=

+0

我不知道PHP支持Perl风格递增。无论如何,我不知道Perl,所以不会出现在我面前。尽管Thaks提供了一个简单的答案。 – Mike

0

One解决方案的:

$ColumnArray2 = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); 
$ColumnArray = array(); 
for($x = 0 ; $x <= 5 ; $x++) 
{ 
    foreach ($ColumnArray2 as $v) { 
     $ColumnArray[] = $x == 0? $v : $ColumnArray[$x-1] . $v; 
    } 
}