一个关于数组循环的问题

WBOY
Release: 2016-06-23 13:53:44
Original
929 people have browsed it

现有一数组如下

$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' );
Copy after login


需要循环数组实现以下效果
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
Copy after login


请问各位该如何实现呢


回复讨论(解决方案)

$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;}
         
Copy after login
 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    
Copy after login

         $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 .= "
            ". PHP_EOL; } $tr .= '
           '. PHP_EOL; $html .= $tr; } $html .= '
          
$text
'. PHP_EOL; echo $html; ?>
Copy after login

ABCDEF
abcdef
GHIJKL
ghijkl
MNOPQR
mnopqr
STUVWX
stuvwx
YZ
yz
Copy after login

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"; }
Copy after login

感谢几位大神的回复 小弟收益匪浅, 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"; }
Copy after login

一层循环便可。

$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 ''; echo ''; echo ''; echo ''; echo '';}echo '
'.implode('',array_pad(array_keys(array_slice($arr, $i*6, 6)),6,'')).'
'.implode('',array_pad(array_slice($arr, $i*6, 6),6,'')).'
';
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn