Php 在相关章节中按字母顺序列出数据
我有一个数据数组,其中包含按字母顺序排序的数据,但在视图中,我有不同的部分。每个字母表代表每个部分。 我需要按照这样的顺序列出数据,带A的部分必须包含以A开头的所有名称,带B的部分必须包含以B开头的名称,依此类推 我的工作完成了 我制作了一个数组,该数组提供数据,并用起始字母分隔数据Php 在相关章节中按字母顺序列出数据,php,sorting,alphabetical,Php,Sorting,Alphabetical,我有一个数据数组,其中包含按字母顺序排序的数据,但在视图中,我有不同的部分。每个字母表代表每个部分。 我需要按照这样的顺序列出数据,带A的部分必须包含以A开头的所有名称,带B的部分必须包含以B开头的名称,依此类推 我的工作完成了 我制作了一个数组,该数组提供数据,并用起始字母分隔数据 foreach ($data['stores_cat_data'] as $store ) { $store_title = $store['title']."<br />";
foreach ($data['stores_cat_data'] as $store ) {
$store_title = $store['title']."<br />";
$curr = current(str_split($store_title));
if(!preg_match("/^[a-zA-Z]$/", $curr))
{
$storeArray['0-9'][$store_title] = $store;
}
else{
$storeArray[$curr][$store_title] = $store;
}
}
这应该做到:
$storeArray = array();
foreach ($data['stores_cat_data'] as $store) {
$title = $store['title'];
$first_char = substr($title, 0, 1);
if (preg_match("/^[0-9]$/", $first_char)) {
$key = "0-9";
} else {
$key = strtoupper($first_char);
}
if (!isset($storeArray[$key])) {
$storeArray[$key] = array();
}
$storeArray[$key][$title] = $store;
}
var_dump($storeArray);
您的代码看起来几乎正确。确定$curr的方式有点奇怪,必须考虑大写/小写。另外,为了避免数组警告,请确保在执行时初始化字母表中的每个字母
您可能还希望删除所有非字母数字字符,如和-这可能会破坏检测。最佳书店的名称将放在0-9以下,B会更好
像:preg_replace/[^A-zA-Z0-9]/,$str这样的regexp应该可以完成这项工作。您能给我们展示一下样本输入和样本输出吗?“看来商店标题出了什么问题。@FritsvanCampen看我的编辑,有很多索引,但我粘贴了一些。输入只是一个按title排序的查询结果集,感谢您的回答,但主要问题是,在视图中,什么样的algoi将应用于列表,以使带有a的部分包含以a开头的名称,依此类推
$storeArray = array();
foreach ($data['stores_cat_data'] as $store) {
$title = $store['title'];
$first_char = substr($title, 0, 1);
if (preg_match("/^[0-9]$/", $first_char)) {
$key = "0-9";
} else {
$key = strtoupper($first_char);
}
if (!isset($storeArray[$key])) {
$storeArray[$key] = array();
}
$storeArray[$key][$title] = $store;
}
var_dump($storeArray);