PHP范围()从A到ZZ?

Ron*_*nn0 26 php range

是否有可能从PHP到ZZ*获得PHP的范围?

abc ... aa ... zx zy zz

对我来说,这不起作用:

range('A', 'ZZ');
Run Code Online (Sandbox Code Playgroud)

它适用于PHPExcel,当它将BE作为最高字段时,我将遍历所有列.在这种情况下,我只得到A,B:

range ('A', 'BE')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ker 47

利用PHP增加字符"perl-style"的能力

$letters = array();
$letter = 'A';
while ($letter !== 'AAA') {
    $letters[] = $letter++;
}
Run Code Online (Sandbox Code Playgroud)

但您也可以使用简单的整数值,并利用PHPExcel的内置PHPExcel_Cell :: stringFromColumnIndex()方法

编辑

从PHP 5.5开始,您还可以使用Generators来避免在内存中实际构建数组

function excelColumnRange($lower, $upper) {
    ++$upper;
    for ($i = $lower; $i !== $upper; ++$i) {
        yield $i;
    }
}

foreach (excelColumnRange('A', 'ZZ') as $value) {
    echo $value, PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*shi 15

试试这个 - (测试工作正常)

function createColumnsArray($end_column, $first_letters = '')
{
  $columns = array();
  $length = strlen($end_column);
  $letters = range('A', 'Z');

  // Iterate over 26 letters.
  foreach ($letters as $letter) {
      // Paste the $first_letters before the next.
      $column = $first_letters . $letter;

      // Add the column to the final array.
      $columns[] = $column;

      // If it was the end column that was added, return the columns.
      if ($column == $end_column)
          return $columns;
  }

  // Add the column children.
  foreach ($columns as $column) {
      // Don't itterate if the $end_column was already set in a previous itteration.
      // Stop iterating if you've reached the maximum character length.
      if (!in_array($end_column, $columns) && strlen($column) < $length) {
          $new_columns = createColumnsArray($end_column, $column);
          // Merge the new columns which were created with the final columns array.
          $columns = array_merge($columns, $new_columns);
      }
  }

  return $columns;
}
echo "<pre>";
print_r( createColumnsArray('BZ'));
Run Code Online (Sandbox Code Playgroud)

http://php.net/range复制


小智 11

for ($i = 'A'; $i !== 'AC'; $i++){
    echo $i.', '; //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, AA, AB,
}
Run Code Online (Sandbox Code Playgroud)

它正在工作


Old*_*ool 6

您可以组合两个foreach循环来生成类似的东西.

// Single letters
foreach(range('A', 'Z') as $letter) {
    echo $letter;
}

// AA-ZZ combinations
foreach(range('A', 'Z') as $letter1) {
    foreach(range('A', 'Z') as $letter2) {
        echo $letter1 . $letter2;
    }
}
Run Code Online (Sandbox Code Playgroud)