現有一數組如下
$array = array ('A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z' );
需要迴圈數組實現以下效果
| A | B | C | D | E | F |
| a | b | c | d | e | f |
| G | H | I | J | K | L |
| g | h | i | j | k | l |
| M | N | O | P | Q | R |
| m | n | o | p | q | r |
| S | T | U | V | W | X |
| s | t | u | v | w | x |
| Y | Z | | | | |
| y | z | | | | |
請問各位該如何?呢
回複討論(解決方案)
$array = array ('A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z' );for($i=0; $i', PHP_EOL; $t1 = array_keys(array_slice($array, $i, 6)) + array_fill(0, 6, ''); $t2 = array_values(array_slice($array, $i, 6)) + array_fill(0, 6, ''); foreach($t1 as $v) { echo " $v", PHP_EOL; } echo '', PHP_EOL; echo '', PHP_EOL; foreach($t2 as $v) { echo " $v", PHP_EOL; } echo '', PHP_EOL;}
A B C D E F a b c d e f G H I J K L g h i j k l M N O P Q R m n o p q r S T U V W X s t u v w x Y Z y z
'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z' );; $keys = array_chunk(array_keys($array),6); $values = array_chunk(array_values($array),6); $newArray = array(); foreach($keys as $key=>$item){ $newArray[] = $item; $newArray[] = $values[$key]; } $html = '' . PHP_EOL; foreach($newArray as $value){ $tr = ''. PHP_EOL; for($i=0;$i<6;$i++){ $text = empty($value[$i])?'':$value[$i]; $tr .= "| $text | ". PHP_EOL; } $tr .= '
'. PHP_EOL; $html .= $tr; } $html .= '
'. PHP_EOL; echo $html; ?>
| A | B | C | D | E | F |
| a | b | c | d | e | f |
| G | H | I | J | K | L |
| g | h | i | j | k | l |
| M | N | O | P | Q | R |
| m | n | o | p | q | r |
| S | T | U | V | W | X |
| s | t | u | v | w | x |
| Y | Z | | | | |
| y | z | | | | |
foreach(array_chunk(array_keys($array), 6) as $v){ $len = count($v); if($len < 6){ $v = array_merge($v, array_fill(0, 6-$len, '')); } echo "\n"; echo "".implode("\n",$v)."\n"; echo "\n"; $vl = array_map('strtolower', $v); echo "\n"; echo "".implode("\n",$vl)."\n"; echo "\n"; }
感謝幾位大神的回複 小弟收益匪淺, jordan102 版主可能沒理解這個問題的本質其實是想隔行顯示標題和內容 ,而不是把大寫轉為小寫問題 ,可能是我給的數組誤導了你,不過如果針對我給數組,你的思路也很值得學習, 再次感謝幾位
樓主新人啊!加油!過來湊個熱鬧!
php 有豐富的數組函數,這裡再提供一種寫法
$array = array ('A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z' );$a = array_map(null, array_chunk(array_keys($array), 6), array_chunk($array, 6));foreach($a as $rs) foreach($rs as $r) { echo "\n"; if(count($r) < 6) $r = array_pad($r, 6, ''); foreach($r as $v) echo "$v\n"; echo "\n"; }
一層迴圈便可。
$arr = array ('A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z' );$page = (int)((count($arr)-1)/6)+1;echo '';for($i=0; $i<$page; $i++){ echo ''; echo '| '.implode(' | ',array_pad(array_keys(array_slice($arr, $i*6, 6)),6,'')).' | '; echo '
'; echo ''; echo '| '.implode(' | ',array_pad(array_slice($arr, $i*6, 6),6,'')).' | '; echo '
';}echo '
';