如何每次迭代增加一个字母N次并存储在数组中?

$letter = array(); for ($i = 'A'; $i !== 'ZZ'; $i++){ $letter[] .= $i; } print_r($letter); 

从上面的脚本我做了一个循环从ABCDZZ

现在,我想把它作为ACEGIZZ 。 ( 2步而不是1

我需要指导去做。

ord()将不起作用,因为您的结束string是两个字符长。

返回string第一个字符的ASCII值。

看着它rest 。

从我的testing中,你需要检查endstring没有“跨越”。 perl风格的字符增量是一个很酷的方法,但它是一个单步方法。 出于这个原因,内部循环在必要时帮助它。 实际上这并不麻烦,实际上这很有用,因为我们需要检查是否每一步都要打断循环。

代码:( 演示 )

 function excelCols($letter,$end,$step=1){ // function doesn't check that $end is "later" than $letter if($step==0)return []; // prevent infinite loop do{ $letters[]=$letter; // store letter for($x=0; $x<$step; ++$x){ // increment in accordance with $step declaration if($letter===$end)break(2); // break if end is "stepped on" ++$letter; } }while(true); return $letters; } echo implode(' ',excelCols('A','JJ',4)); echo "\n --- \n"; echo implode(' ',excelCols('A','BB',3)); echo "\n --- \n"; echo implode(' ',excelCols('A','ZZ',1)); echo "\n --- \n"; echo implode(' ',excelCols('A','ZZ',3)); 

输出:

 AEIMQUY AC AG AK AO AS AW BA BE BI BM BQ BU BY CC CG CK CO CS CW DA DE DI DM DQ DU DY EC EG EK EO ES EW FA FE FI FM FQ FU FY GC GG GK GO GS GW HA HE HI HM HQ HU HY IC IG IK IO IS IW JA JE JI --- ADGJMPSVY AB AE AH AK AN AQ AT AW AZ --- ABCDEFGHIJKLMNOPQRSTU VWXYZ AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CZ DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ DR DS DT DU DV DW DX DY DZ EA EB EC ED EE EF EG EH EI EJ EK EL EM EN EO EP EQ ER ES ET EU EV EW EX EY EZ FA FB FC FD FE FF FG FH FI FJ FK FL FM FN FO FP FQ FR FS FT FU FV FW FX FY FZ GA GB GC GD GE GF GG GH GI GJ GK GL GM GN GO GP GQ GR GS GT GU GV GW GX GY GZ HA HB HC HD HE HF HG HH HI HJ HK HL HM HN HO HP HQ HR HS HT HU HV HW HX HY HZ IA IB IC ID IE IF IG IH II IJ IK IL IM IN IO IP IQ IR IS IT IU IV IW IX IY IZ JA JB JC JD JE JF JG JH JI JJ JK JL JM JN JO JP JQ JR JS JT JU JV JW JX JY JZ KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KO KP KQ KR KS KT KU KV KW KX KY KZ LA LB LC LD LE LF LG LH LI LJ LK LL LM LN LO LP LQ LR LS LT LU LV LW LX LY LZ MA MB MC MD ME MF MG MH MI MJ MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NB NC ND NE NF NG NH NI NJ NK NL NM NN NO NP NQ NR NS NT NU NV NW NX NY NZ OA OB OC OD OE OF OG OH OI OJ OK OL OM ON OO OP OQ OR OS OT OU OV OW OX OY OZ PA PB PC PD PE PF PG PH PI PJ PK PL PM PN PO PP PQ PR PS PT PU PV PW PX PY PZ QA QB QC QD QE QF QG QH QI QJ QK QL QM QN QO QP QQ QR QS QT QU QV QW QX QY QZ RA RB RC RD RE RF RG RH RI RJ RK RL RM RN RO RP RQ RR RS RT RU RV RW RX RY RZ SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO SP SQ SR SS ST SU SV SW SX SY SZ TA TB TC TD TE TF TG TH TI TJ TK TL TM TN TO TP TQ TR TS TT TU TV TW TX TY TZ UA UB UC UD UE UF UG UH UI UJ UK UL UM UN UO UP UQ UR US UT UU UV UW UX UY UZ VA VB VC VD VE VF VG VH VI VJ VK VL VM VN VO VP VQ VR VS VT VU VV VW VX VY VZ WA WB WC WD WE WF WG WH WI WJ WK WL WM WN WO WP WQ WR WS WT WU WV WW WX WY WZ XA XB XC XD XE XF XG XH XI XJ XK XL XM XN XO XP XQ XR XS XT XU XV XW XX XY XZ YA YB YC YD YE YF YG YH YI YJ YK YL YM YN YO YP YQ YR YS YT YU YV YW YX YY YZ ZA ZB ZC ZD ZE ZF ZG ZH ZI ZJ ZK ZL ZM ZN ZO ZP ZQ ZR ZS ZT ZU ZV ZW ZX ZY ZZ --- ADGJMPSVY AB AE AH AK AN AQ AT AW AZ BC BF BI BL BO BR BU BX CA CD CG CJ CM CP CS CV CY DB DE DH DK DN DQ DT DW DZ EC EF EI EL EO ER EU EX FA FD FG FJ FM FP FS FV FY GB GE GH GK GN GQ GT GW GZ HC HF HI HL HO HR HU HX IA ID IG IJ IM IP IS IV IY JB JE JH JK JN JQ JT JW JZ KC KF KI KL KO KR KU KX LA LD LG LJ LM LP LS LV LY MB ME MH MK MN MQ MT MW MZ NC NF NI NL NO NR NU NX OA OD OG OJ OM OP OS OV OY PB PE PH PK PN PQ PT PW PZ QC QF QI QL QO QR QU QX RA RD RG RJ RM RP RS RV RY SB SE SH SK SN SQ ST SW SZ TC TF TI TL TO TR TU TX UA UD UG UJ UM UP US UV UY VB VE VH VK VN VQ VT VW VZ WC WF WI WL WO WR WU WX XA XD XG XJ XM XP XS XV XY YB YE YH YK YN YQ YT YW YZ ZC ZF ZI ZL ZO ZR ZU ZX 

这是一个数组函数方法:

代码:( 演示 )

 $start='C'; $end='DD'; $step=4; // generate and store more than we need (this is an obvious method disadvantage) $result=$array=range('A','Z',1); // store A - Z as $array and $result foreach($array as $a){ foreach($array as $b){ $result[]="$a$b"; // store double letter combinations if(in_array($end,$result)){break(2);} // stop asap } } //echo implode(' ',$result),"\n\n"; // slice away from the front of the array $result=array_slice($result,array_search($start,$result)); // reindex keys //echo implode(' ',$result),"\n\n"; // punch out elements that are not "stepped on" $result=array_filter($result,function($k)use($step){return $k%$step==0;},ARRAY_FILTER_USE_KEY); // use modulo // result is ready echo implode(' ',$result); 

输出:

 CGKOSW AA AE AI AM AQ AU AY BC BG BK BO BS BW CA CE CI CM CQ CU CY DC 

这是你的问题的解决scheme,

 $letter = array(); for ($i = 'A'; $i !== 'ZZ'; $i++){ if(ord($i) % 2 != 0) $letter[] .= $i; } print_r($letter); 

您需要获取该字符的ASCII值,这将解决您的问题。

这里是ord文件和工作代码 。

根据你的要求,你可以这样做,

 for ($i = 'A'; $i !== 'ZZ'; ord($i)+$x){ $letter[] .= $i; } print_r($letter); 

这里根据您的要求设置$ x。