我很抱歉没有创造性的头衔。
我试图按字母顺序对数组进行分组。 The accepted answer in this question (by Hugo Delsing)对我的任务有很大的帮助,但我仍然希望进一步采取行动......
这是我目前的代码:
$records = ['7th Trick', 'Jukebox', 'Dynamyte', '3rd Planet'];
$lastChar = '';
sort($records, SORT_STRING | SORT_FLAG_CASE);
foreach($records as $val) {
$char = strtolower($val[0]);
if ($char !== $lastChar) {
if ($lastChar !== '') echo "</ul>";
echo "<h2>".strtoupper($char)."</h2><ul>";
$lastChar = $char;
}
echo '<li>'.$val.'</li>';
}
echo "</ul>";
我想制作一些东西,以便将非字母项目组合在一起而不是单独分开。
示例:
&#34; 7th Trick&#34;和#34;第三星球&#34;汇总为非字母,而不是单独显示在&#34; 7&#34;和&#34; 3&#34;分类。
任何想法怎么做?
答案 0 :(得分:1)
从数组中删除alpha并在打印alphas后显示它们。
<?php
$records = ['7th Trick', 'Jukebox', 'Dynamyte', '3rd Planet'];
$lastChar = '';
sort($records, SORT_STRING | SORT_FLAG_CASE);
$alpha = array();
$non_alpha = array();
foreach($records as $val) {
if (ctype_alpha($val[0])) {
$alpha[] = $val;
} else {
$non_alpha[] = $val;
}
}
foreach($alpha as $val) {
$char = strtolower($val[0]);
if ($char !== $lastChar) {
if ($lastChar !== '') echo "</ul>";
echo "<h2>".strtoupper($char)."</h2><ul>";
$lastChar = $char;
}
echo '<li>'.$val.'</li>';
}
echo "</ul>";
if (sizeof($non_alpha) > 0) {
echo "<h2>Digits</h2><ul>";
foreach ($non_alpha as $val) {
echo '<li>'.$val.'</li>';
}
echo "</ul>";
}
答案 1 :(得分:1)
您只需在现有代码中添加一行即可完成此操作。
$char = strtolower($val[0]);
// Convert $char to one value if it isn't a letter
if (!ctype_alpha($char)) $char = 'Non-alphabetic';
if ($char !== $lastChar) {
其余的应该是一样的。