<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум поддержки пользователей Symfony - php. проблема сортировки массива с украинскими словами]]></title>
	<link rel="self" href="http://forum.symfony.org.ua/feed/atom/topic/874/"/>
	<updated>2010-03-30T20:47:02Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.symfony.org.ua/topic/874/php-problema-sortirovki-massiva-s-ukrainskimi-slovami/</id>
		<entry>
			<title type="html"><![CDATA[Re: php. проблема сортировки массива с украинскими словами]]></title>
			<link rel="alternate" href="http://forum.symfony.org.ua/post/4462/#p4462"/>
			<content type="html"><![CDATA[Попробуйте

[code]

    setlocale(LC_ALL, 'uk_UA.UTF8');
    asort($array, SORT_LOCALE_STRING);

[/code]]]></content>
			<author>
				<name><![CDATA[ingvar]]></name>
				<uri>http://forum.symfony.org.ua/user/16/</uri>
			</author>
			<updated>2010-03-30T20:47:02Z</updated>
			<id>http://forum.symfony.org.ua/post/4462/#p4462</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: php. проблема сортировки массива с украинскими словами]]></title>
			<link rel="alternate" href="http://forum.symfony.org.ua/post/4317/#p4317"/>
			<content type="html"><![CDATA[неа, не помогло... хотя лолаки все прально стоят
придеца переписывать алфавит и по букве перебирать... задолбался ковырять локали...
написал такое на быструю руку

[code]function sort_uk( $a, $b ){
    $a = mb_strtoupper ( $a, 'UTF-8' );
    $b = mb_strtoupper ( $b, 'UTF-8' );
    $alphabet = array(
        'А' => 1, 'Б' => 2, 'В' => 3, 'Г' => 4, 'Д' => 5, 'Е' => 6, 'Є' => 7, 'Ж' => 8, 'З' => 9, 'И' => 10, 'І' => 11,
        'Ї' => 12, 'Й' => 13, 'К' => 14, 'Л' => 15, 'М' => 16, 'Н' => 17, 'О' => 18, 'П' => 19, 'Р' => 20, 'С' => 21, 'Т' => 22,
        'У' => 23, 'Ф' => 24, 'Х' => 25, 'Ц' => 26, 'Ч' => 27, 'Ш' => 28, 'Щ' => 29, 'Ь' => 30, 'Ю' => 31, 'Я' => 32
    );
    $lengthA = mb_strlen ( $a, 'UTF-8' );
    $lengthB = mb_strlen ( $b, 'UTF-8' );
    for( $i = 0; $i < ( $lengthA > $lengthB? $lengthB : $lengthA ); $i++ ){
        if ( $alphabet[ mb_substr( $a, $i, 1, 'UTF-8' ) ] < $alphabet[ mb_substr( $b, $i, 1, 'UTF-8' ) ] ){
            $status = -1;
            break;
        }
        elseif ( $alphabet[ mb_substr( $a, $i, 1, 'UTF-8' ) ] > $alphabet[ mb_substr( $b, $i, 1, 'UTF-8' ) ] ){
            $status = 1;
            break;
        }
        else{
            $status = 0;
        }
    }
    return $status;
}[/code]
запускать через uasort($array, 'sort_uk');]]></content>
			<author>
				<name><![CDATA[Sergic]]></name>
				<uri>http://forum.symfony.org.ua/user/569/</uri>
			</author>
			<updated>2010-02-25T17:50:46Z</updated>
			<id>http://forum.symfony.org.ua/post/4317/#p4317</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: php. проблема сортировки массива с украинскими словами]]></title>
			<link rel="alternate" href="http://forum.symfony.org.ua/post/4314/#p4314"/>
			<content type="html"><![CDATA[[url]http://sgehrig.wordpress.com/2008/09/24/on-how-to-sort-an-array-of-utf-8-strings/[/url]

может поможет]]></content>
			<author>
				<name><![CDATA[Roman]]></name>
				<uri>http://forum.symfony.org.ua/user/2/</uri>
			</author>
			<updated>2010-02-25T06:58:13Z</updated>
			<id>http://forum.symfony.org.ua/post/4314/#p4314</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[php. проблема сортировки массива с украинскими словами]]></title>
			<link rel="alternate" href="http://forum.symfony.org.ua/post/4313/#p4313"/>
			<content type="html"><![CDATA[суть такова... есть масив
[code]$arr = array( 'макака', 'абрикос', 'інвестор', 'ємен' );

print_r($arr);
Array
(
   [0] => макака
   [1] => абрикос
   [2] => інвестор
   [3] => ємен
)

asort($arr);[/code]

а сортировка делает чепуху:
[code]print_r($arr);
Array
(
   [2] => інвестор
   [3] => ємен
   [1] => абрикос
   [0] => макака
)[/code]
тобишь буквы "і" и "є" ставит на первое место, хотя по алфавиту это далеко не так...
как с эти бороться?]]></content>
			<author>
				<name><![CDATA[Sergic]]></name>
				<uri>http://forum.symfony.org.ua/user/569/</uri>
			</author>
			<updated>2010-02-24T22:09:32Z</updated>
			<id>http://forum.symfony.org.ua/post/4313/#p4313</id>
		</entry>
</feed>
