Php 如何按字母顺序显示数组?
我需要显示一个从我的数据库链接页面Php 如何按字母顺序显示数组?,php,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'
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
但我不明白如何使用多维数组来实现它。
我可以先按“name”属性进行排序,但如何获得放入新数组的第一个字母呢
[
"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_column($yourArray, "name"), SORT_ASC, $yourArray );
请注意,您只能有一个键,因此任何重复的第一个字母都将替换其他字母,这就是您想要的吗?所以没有三星?
array_multisort( array_column($yourArray, "name"), SORT_ASC, $yourArray );