php数组排序问题

发布于 2024-09-18 16:22:30 字数 218 浏览 3 评论 0原文

当我使用 asort() 排序时,我想按字母表对数组进行排序

,但我得到的结果首先是大写的名称,然后是所有小写的名称,

例如:

Avi
Beni
..
..
avi
beni

如果我想要比如:

Avi
avi
Beni
beni
..
..

我该怎么做?

i want to sort an array by alphabet

when i use asort() its sorting , but the results that i get is first of all , the names in upper-case, and after that all the names with lower-case

like :

Avi
Beni
..
..
avi
beni

if i want like :

Avi
avi
Beni
beni
..
..

how can i do it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱的那么颓废 2024-09-25 16:22:30

您可以使用 netcasesort()。它使用不区分大小写的“自然顺序”算法对数组进行排序。

这样做:

natcasesort($array);

You can use netcasesort(). It sort an array using a case insensitive "natural order" algorithm.

Do it like this:

natcasesort($array);
缘字诀 2024-09-25 16:22:30

到目前为止,建议的解决方案并不正确,natcasesortusort($arr, 'strcasecmp') 解决方案在某些起始数组配置中失败。

让我们做一些测试,找到解决方案。

<?php
$array1 = $array2 = $array3 = $array4 = $array5 = array('IMG1.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG2.png');

// This result is the one we nee to avoid
sort($array1);
echo "Standard sorting\n";
print_r($array1);

// img2.png and IMG2.png are not in the desired order
// note also the array index order in the result array
natcasesort($array2);
echo "\nNatural order sorting (case-insensitive)\n";
print_r($array2);

// img1.png and IMG1.png are not in the desired order
usort($array3, 'strcasecmp');
echo "\nNatural order sorting (usort-strcasecmp)\n";
print_r($array3);

// Required function using the standard sort algorithm
function mySort($a,$b) {
  if (strtolower($a)== strtolower($b))
    return strcmp($a,$b);
  return strcasecmp($a,$b);
}

usort($array4, 'mySort');
echo "\nStandard order sorting (usort-userdefined)\n";
print_r($array4);

// Required function using the natural sort algorithm
function myNatSort($a,$b) {
  if (strtolower($a)== strtolower($b))
    return strnatcmp($a,$b);
  return strnatcasecmp($a,$b);
}

usort($array5, 'myNatSort');
echo "\nNatural order sorting (usort-userdefined)\n";
print_r($array5);

?>

The proposed solutions, until now, arent correct, natcasesort and the usort($arr, 'strcasecmp') solutions are failing with some starting array configurations.

Let do some tests, to find a solution.

<?php
$array1 = $array2 = $array3 = $array4 = $array5 = array('IMG1.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG2.png');

// This result is the one we nee to avoid
sort($array1);
echo "Standard sorting\n";
print_r($array1);

// img2.png and IMG2.png are not in the desired order
// note also the array index order in the result array
natcasesort($array2);
echo "\nNatural order sorting (case-insensitive)\n";
print_r($array2);

// img1.png and IMG1.png are not in the desired order
usort($array3, 'strcasecmp');
echo "\nNatural order sorting (usort-strcasecmp)\n";
print_r($array3);

// Required function using the standard sort algorithm
function mySort($a,$b) {
  if (strtolower($a)== strtolower($b))
    return strcmp($a,$b);
  return strcasecmp($a,$b);
}

usort($array4, 'mySort');
echo "\nStandard order sorting (usort-userdefined)\n";
print_r($array4);

// Required function using the natural sort algorithm
function myNatSort($a,$b) {
  if (strtolower($a)== strtolower($b))
    return strnatcmp($a,$b);
  return strnatcasecmp($a,$b);
}

usort($array5, 'myNatSort');
echo "\nNatural order sorting (usort-userdefined)\n";
print_r($array5);

?>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文