проблема с массивом php - PullRequest
       22

проблема с массивом php

1 голос
/ 13 сентября 2010

я хочу отсортировать массив по алфавиту

когда я использую asort () его сортировку, но результаты, которые я получаю, это прежде всего имена в верхнем регистре, а после этого все имена в нижнем регистре

нравится:

Avi
Beni
..
..
avi
beni

если я хочу как:

Avi
avi
Beni
beni
..
..

как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

Вы можете использовать netcasesort(). Он сортирует массив, используя нечувствительный к регистру алгоритм «естественного порядка».

Сделай так:

natcasesort($array);
2 голосов
/ 13 сентября 2010

Предлагаемые решения до сих пор не верны, natcasesort и usort ($ 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);

?>

2 голосов
/ 13 сентября 2010
...