获取以特定字符串开头的所有元素

时间:2014-08-24 11:07:53

标签: php arrays

我需要按字母顺序列出查询结果(公司列表)。

由于所需解决方案的性质,我需要将所有分开(所有以'A'开头,所有以'B'开头分开,所有以'C'开头等等)所以我不能只是按字母顺序直接列出结果....我需要创建26个数组,每个字母一个。

我已将所有结果(从查询中选择所有公司)放入数组中,现在我需要将它们分成26个数组。

$ companies = array(公司1,公司2,......公司n);

现在我正在寻找(希望有)一个内置的PHP数组函数:

$ companies_beginning_with_A = some_array_function('A',$ companies);

我找不到这样的功能......有人知道吗?如果不是,你会怎么推荐我这样做?

2 个答案:

答案 0 :(得分:1)

带有fnmatch()

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;
}