php - 如何按字母顺序显示数组?
问题描述
我需要显示一个包含来自我的数据库的链接的页面
array (size=5)
0 =>
array (size=3)
'id' => string '1' (length=1)
'name' => string 'apple' (length=5)
'url' => string 'http://iphone7' (length=14)
1 =>
array (size=3)
'id' => string '2' (length=1)
'name' => string 'samsung' (length=7)
'url' => string 'http://samsung' (length=14)
2 =>
array (size=3)
'id' => string '3' (length=1)
'name' => string 'xiaom' (length=5)
'url' => string 'http://xiaomi' (length=13)
3 =>
array (size=3)
'id' => string '6' (length=1)
'name' => string 'sony' (length=4)
'url' => string 'http://sony' (length=11)
4 =>
array (size=3)
'id' => string '7' (length=1)
'name' => string 'nokia' (length=5)
'url' => string 'http://nokia' (length=12)
像这样
A
apple <-- it's a link name with url
N
nokia
S
samsung
sony
X
xaomi
按字母顺序(大写)我知道如何使用普通数组(只是名称)
$result = array();
$previous = null;
$i = 0;
foreach ($this->model as $value) {
$firstLetter = substr($value, 0, 1);
if ($previous !== $firstLetter) {
$result[$i] = mb_convert_case($firstLetter, MB_CASE_UPPER, "UTF-
8");
$i++;
}
$result[$i] = $value;
$previous = $firstLetter;
$i++;
}
但我不明白如何使用多维数组来做到这一点。我可以首先按“名称”属性排序,但是如何获取第一个字母以放入新数组
[
"A" = > array ('name' => apple,'url' => 'http://...'),
"S" => array ('name' => samsung, 'url' => 'http://...')
]
用 foreach 运算符显示它
我使用这个函数来获取首字母
$result = array();
$previous = null;
$i = 0;
foreach ($model as $value => $key) {
$firstLetter = substr($key["name"], 0, 1);
if ($previous !== $firstLetter) {
$result[$firstLetter] = $firstLetter;
$result[$firstLetter[$i]] = $key;
}
// something must be here to assign secons array to
$result[$firstLetter
$previous = $firstLetter;
}
我明白了
array (size=4)
'a' =>
array (size=3)
'id' => string '1' (length=1)
'name' => string 'apple' (length=5)
'url' => string 'http://iphone7' (length=14)
'n' =>
array (size=3)
'id' => string '7' (length=1)
'name' => string 'nokia' (length=5)
'url' => string 'http://nokia' (length=12)
's' =>
array (size=3)
'id' => string '2' (length=1)
'name' => string 'samsung' (length=7)
'url' => string 'http://samsung' (length=14)
'x' =>
array (size=3)
'id' => string '3' (length=1)
'name' => string 'xiaom' (length=5)
'url' => string 'http://xiaomi' (length=13)
解决方案
您可以使用 array_multisort
array_multisort( array_column($yourArray, "name"), SORT_ASC, $yourArray );
推荐阅读
- dart - 依赖
- go - 银杏包装检测
- go - 如何让 Go 程序使用更多内存?这是推荐的吗?
- python - 如何在我的程序中获得除数的总和?
- integration - Dialogflow V2 总是给出这个错误:- Webhook 调用失败。错误:Webhook 响应为空
- rest - delphi, RESTServer 登录和密码
- ios - 如何在 Realm Swift 中比较两个字符串列表?
- angularjs - Google Maps API 手势处理不适用于 AngularJS Material
- python - Python discord bot:获取频道中的最后一条固定消息
- botframework - Luis Api 'FewLabels' 问题