我有一个数组已按字母顺序包含所有值:
Alligator
Alpha
Bear
Bees
Banana
Cat
Cougar
Run Code Online (Sandbox Code Playgroud)
现在我只想列出每个以上面开头的第一个字母,如下所示:
A
---
Alligator
Alpha
B
---
Bear
Bees
Banana
C
---
Cat
Cougar
etc...
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
Art*_*ct2 23
解决方案是将变量保存在先前打印的单词的第一个字母中,如:
$previous = null;
foreach($array as $value) {
$firstLetter = substr($value, 0, 1);
if($previous !== $firstLetter) echo "\n".$firstLetter."\n---\n\n";
$previous = $firstLetter;
echo $value."\n";
}
Run Code Online (Sandbox Code Playgroud)
注意:如果某些条目以小写字母开头而其他条目以大写字母开头,请使用strcasecmp测试中的函数而不是!==.
小智 8
这是另一个简单的解决方案:-
$result = array();
foreach ($list as $item) {
$firstLetter = substr($item, 0, 1);
$result[$firstLetter][] = $item;
}
echo "<pre>"; print_r($result);
Run Code Online (Sandbox Code Playgroud)
输出 :-
Array (
[A] => Array
(
[0] => Alligator
[1] => Alpha
)
[B] => Array
(
[0] => Bear
[1] => Bees
[2] => Banana
)
[C] => Array
(
[0] => Cat
[1] => Cougar
)
)
Run Code Online (Sandbox Code Playgroud)