1

我目前有显示数据的代码,如下所示:

1  
11 Title Here

2  
21 Guns

A  
Awesome

使用这个:

    foreach($animes as $currentAnime){
        $thisLetter = strtoupper($currentAnime->title[0]);
        $sorted[$thisLetter][] = array('title' => $currentAnime->title, 'id' => $currentAnime->id);
        unset($thisLetter);
    }

如何将所有数字分组到 a #,并将所有符号分组到 a ~

像这样:

#
11 Title Here
21 Guns

~
.ahaha

A
Awesome

谢谢你的建议。

4

1 回答 1

0

如果这是一个数字,您可以使用is_numeric()进行检查,如果这是一个符号,则可以使用preg_match()进行检查。

foreach($animes as $currentAnime){
    $thisLetter = strtoupper($currentAnime->title[0]);
    if(is_numeric($thisLetter))
    {
     $sorted['#'][] = array('title' => $currentAnime->title, 'id' => $currentAnime->id);
    }
    else if(preg_match('/[^a-zA-Z0-9]+/', $thisLetter))
    {
          $sorted['~'][] = array('title' => $currentAnime->title, 'id' => $currentAnime->id);   
    }
    else
    {
          $sorted[$thisLetter][] = array('title' => $currentAnime->title, 'id' => $currentAnime->id);
    }
    unset($thisLetter);
}

[^a-zA-Z0-9]+- 如果没有 az 字母,也没有 AZ 字符或 0-9 数字,则适合字母,可以添加不适合的字符,因为你没有精确地适合哪些字符,所以我添加了正则表达式基础知识。此外,您还可以检查是否只有一个字母[a-zA-Z]+并将其添加到字符串组,最后一个“else”语句将用于既不是数字也不是字符串的字符串。

于 2013-05-31T06:57:30.267 回答