duanci1939 2017-07-05 09:16
浏览 16
已采纳

从数组生成字符串序列[关闭]

I have an alphabet array:

$ga = array_merge(range('A', 'Z'), range(0,9));

How can I generate next strings:

AAAA, AAAB... AAAZ, AAA0... AAA9, AABA, AA9A... ABAA... 9999

Thanks!

  • 写回答

1条回答 默认 最新

  • dongtaijue1578 2017-07-05 09:23
    关注

    This probably is the easiest approach:

    <?php
    $alphabeth = array_merge(range('A', 'Z'), range(0,9));
    $character = [];
    foreach ($alphabeth as $character[0]) {
      foreach ($alphabeth as $character[1]) {
        foreach ($alphabeth as $character[2]) {
          foreach ($alphabeth as $character[3]) {
            $catalog[] = vsprintf('%s%s%s%s', $character);
          }
        }
      }
    }
    print_r($catalog);
    

    The output obviously is:

    Array
    (
        [0] => AAAA
        [1] => AAAB
        [2] => AAAC
        [3] => AAAD
        .....
        [1679613] => 9997
        [1679614] => 9998
        [1679615] => 9999
    )
    

    UPDATE:

    You mention in the comments below that you need to fill these strings into a file, if I got you right. If so, then this would be an example for a sequential processing which dramatically reduces the scripts memory footprint, as also mentioned in the comments:

    <?php
    $alphabeth = array_merge(range('A', 'Z'), range(0,9));
    $handle = fopen('/home/arkascha/catalog.list', 'w');
    foreach ($alphabeth as $character[0]) {
      foreach ($alphabeth as $character[1]) {
        foreach ($alphabeth as $character[2]) {
          foreach ($alphabeth as $character[3]) {
            fwrite($handle, vsprintf("%s%s%s%s
    ", $character));
          }
        }
      }
    }
    fclose($handle);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?