Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с сортировкой массива
 
 автор: zizi   (23.09.2009 в 22:30)   письмо автору
 
 

Есть массив из 120 элементов и значений
$arr = array('0' => "HK",
'1' => "HF",
....
'120' => "WR")

Так вот после сортировки в массиве остается 87 элементов. В чем проблема помогите пжлст??

  Ответить  
 
 автор: Trianon   (23.09.2009 в 22:44)   письмо автору
 
   для: zizi   (23.09.2009 в 22:30)
 

из приведенного примера не видно, чем он сортировался, и сколько элементов в нем было вначале.
А ключи меняют многие сортирующие функции.

  Ответить  
 
 автор: zizi   (24.09.2009 в 01:02)   письмо автору
 
   для: Trianon   (23.09.2009 в 22:44)
 

Сортировал sort(); В начале было 120 элементов. После осталось 87.

PS Проблема уже решена сортировкой ksort();, но все равно для развития интересна узнать почему sort(); обрезал массив.

  Ответить  
 
 автор: Trianon   (24.09.2009 в 01:12)   письмо автору
 
   для: zizi   (24.09.2009 в 01:02)
 

Я полагаю, там и было 87 элементов.

  Ответить  
 
 автор: zizi   (24.09.2009 в 01:22)   письмо автору
 
   для: Trianon   (24.09.2009 в 01:12)
 

Ну почему же?? ksort() отсортировал то 120 элементов, а sort только 87. Ща скину дамп.

  Ответить  
 
 автор: zizi   (24.09.2009 в 01:29)   письмо автору
 
   для: zizi   (24.09.2009 в 01:22)
 

$prof = array('4' => "Human Knight",
                '0' => "Human Fighter",
                '18' => "Elven Fighter", 
                '10' => "Human Mage", 
               '1' => "Warrior", 
               '7' => "Rogue", 
               '3' => "Warlord", 
               '6' => "Dark Avenger", 
               '5' => "Paladin",
               '2' => "Gladiator",
               '8' => "Treasure Hunter",
               '9' => "Hawkeye",
               '91' => "Hell Knight",
               '90' => "Phenix Knight",
               '89' => "Dreadnought",
               '88' => "Duelist",
               '26' => "Elven Wizard",
               '93' => "Adventurer",
               '92' => "Sagittarius",
               '11' => "Human Wizard",
               '15' => "Cleric",
               '12' => "Sorcerer/ss",
               '13' => "Necromancer",
               '14' => "Warlock",
               '16' => "Bishop",
               '17' => "Prophet",
               '94' => "Archmage",
               '95' => "Soultaker",
               '96' => "Arcana Lord",
               '97' => "Cardinal",
               '98' => "Hierophant",
               '19' => "Elven Knight",
               '22' => "Elven Scout",
               '28' => "Elven Wizard",
               '29' => "Elven Oracle",
               '20' => "Temple Knight",
               '21' => "SwordSinger",
               '23' => "Plainswalker",
               '25' => "Elven Mage", 
               '24' => "Silver Renger",
               '28' => "Elemental Summoner",
               '27' => "SpellSinger",
                '31' => "Dark Elven Fighter", 
                '30' => "Elven Elder",
                '99' => "Evas Templar",
                '100' => "Sword Muse",
                '101' => "Wind Rider",
                '102' => "MoonlightSentinal",
                '104' => "Elemental Master",
                '103' => "Mustic Muse",
                '105' => "Evas Saint",
                '32' => "Palus Knight",
                '35' => "Assassin",
                '39' => "Dark Wizard ",
                '42' => "Shillien Oracle",
                '33' => "Shillien Knight",
                '34' => "BladeDancer",
                '36' => "Abyss Walker",
                '38' => "Dark Elven Mage", 
                '37' => "Phantom Ranger",
                '41' => "Phantom Summoner",
                '40' => "SpellHowler",
                '43' => "Shillien Elder",
                '106' => "Shillien Templar",
                '107' => "Spectral Dancer",
                '108' => "Ghost Hunter",
                '109' => "Ghost Sentinal",
                '111' => "Spectral Master",
                '110' => "Storm Screamer",
                '112' => "Shillien Saint",
                '44' => "Orc Fighter", 
                '45' => "Orc Raider",
                '47' => "Monk",
                '50' => "Orc Shaman",
                '54' => "Scavenger",
                '56' => "Artisan",
                '46' => "Destroyer",
                '49' => "Orc Mage", 
                '48' => "Tyrant",
                '51' => "Overlord",
                '53' => "Dwarf Fighter", 
                '52' => "WarCryer",
                '55' => "Bounty Hunter",
                '57' => "Warsmith",
                '113' => "Titan",
                '114' => "Grand Khavatari",
                '115' => "Dominator",
                '116' => "Doom Cryer",
                '117' => "Fortune Seeker",
                '118' => "Maestro");
Вот сам массив, попробуйте отсортировть sort()

  Ответить  
 
 автор: Trianon   (24.09.2009 в 01:38)   письмо автору
 
   для: zizi   (24.09.2009 в 01:29)
 

Это Вы попробуйте выполнить echo count($prof); и всё же подумать немного, перед тем как писать.

  Ответить  
 
 автор: zizi   (24.09.2009 в 01:57)   письмо автору
 
   для: Trianon   (24.09.2009 в 01:38)
 

Ни че не понял. Почему 88, ведь ключей то 119? Я совсем запутался уже. Или дело не в ключах?
PS Если бы я понял в чем дело не писал бы.

  Ответить  
 
 автор: Trianon   (24.09.2009 в 02:20)   письмо автору
 
   для: zizi   (24.09.2009 в 01:57)
 

пересчитайте строчки руками.

  Ответить  
 
 автор: vtos   (24.09.2009 в 10:10)   письмо автору
 
   для: zizi   (24.09.2009 в 01:57)
 

У вас ассоциативный массив получился. И если значение ключа равняется '118', это не значит, что там 119 элементов. Это просто название ключа. Можете заменить 118 на 1000, но это не будет означать, что там теперь 1001 элемент. Вы при формировании массива уберите кавычки из названий ключей в коде(если это ваш код и вы можете его править), т.е. сделайте массив списком обычным...

  Ответить  
 
 автор: zizi   (24.09.2009 в 13:18)   письмо автору
 
   для: vtos   (24.09.2009 в 10:10)
 

Все теперь все понял спасибо за ответы. Я этот массив вынул из мускула и в цикле закатал в файл.

  Ответить  
 
 автор: Trianon   (24.09.2009 в 13:28)   письмо автору
 
   для: vtos   (24.09.2009 в 10:10)
 

Добавлю лишь, что кавычки в названиях ключей на ассоциативность массива влияют слабо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования