我需要按字母顺序列出查询结果(公司列表)。
由于所需解决方案的性质,我需要将所有分开(所有以'A'开头,所有以'B'开头分开,所有以'C'开头等等)所以我不能只是按字母顺序直接列出结果....我需要创建26个数组,每个字母一个。
我已将所有结果(从查询中选择所有公司)放入数组中,现在我需要将它们分成26个数组。
$ companies = array(公司1,公司2,......公司n);
现在我正在寻找(希望有)一个内置的PHP数组函数:
$ companies_beginning_with_A = some_array_function('A',$ companies);
我找不到这样的功能......有人知道吗?如果不是,你会怎么推荐我这样做?
答案 0 :(得分:1)
array_filter()是一个非常强大的组合
$search = 'A*';
$companies_beginning_with_A = array_filter(
$companies,
function($value) use ($search) {
return fnmatch($search, $value);
}
);
请注意在搜索字词
中使用通配符所以
$splitCompanies = array();
foreach(range('A', 'Z') as $letter) {
$search = $letter . '*';
$splitCompanies[$letter] = array_filter(
$companies,
function($value) use ($search) {
return fnmatch($search, $value);
}
);
}
将构建一个由字母
索引的多维数组顶级答案 1 :(得分:0)
您可以执行以下操作,将结果简单地放入一个数组中:
$sortedCompanies = array();
foreach($companies as $company){
$firstLetter = substr($company, 0, 1);
$sortedCompanies[$firstLetter][] = $company;
}