Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.01.2012, 15:37
Аспирант
Отправить личное сообщение для mcavalon Посмотреть профиль Найти все сообщения от mcavalon
 
Регистрация: 04.11.2011
Сообщений: 65

Сортировка многомерного массива
Добрый день!

Помогите пожалуйста отсортировать многомерный массив
$PLACEMARKS
следующего вида
$PLACEMARKS = array();
$i=0;
foreach($arResult["ITEMS"] as $arItem)
{
    if ($arItem["PROPERTIES"]["GOOGLE_MAP"]["VALUE"]!=""){
		$MAP = explode (",", $arItem["PROPERTIES"]["GOOGLE_MAP"]["VALUE"]);
		$TEXT = "<a href=".$arItem["DETAIL_PAGE_URL"].">".$arItem["NAME"]."</a>";
		$PLACEMARKS[$i]["X"] = $MAP[0]; //Заполняем массив маркера данными
		$PLACEMARKS[$i]["Y"] = $MAP[1]; //
		$PLACEMARKS[$i]["NAME"] = $arItem["NAME"];  //
		$PLACEMARKS[$i]["COUNTRY"] =  $arItem["DISPLAY_PROPERTIES"]["COUNTRY"]["VALUE"];
		$PLACEMARKS[$i]["YEAR"] =  $arItem["DISPLAY_PROPERTIES"]["YEAR"]["VALUE"];
		//получим значения пользовательских полей раздела
		$sUFCode="UF_".strtoupper($arItem["PROPERTIES"]["ETAP"]["VALUE_XML_ID"])."_ICON";
		$arSelect = array("$sUFCode");
		$sectionResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID"=> $arResult["ID"], "ID" =>$arItem["IBLOCK_SECTION_ID"]), false, $arSelect);
		while ($sectionProp = $sectionResult -> GetNext()) {
			$iFileId=$sectionProp[$sUFCode];//id файла иконки для карты 
			$PLACEMARKS[$i]["ICO"]=CFile::GetPath($iFileId);
		}
		$PLACEMARKS[$i]["URL"] =  $arItem["DETAIL_PAGE_URL"];
		$str = str_replace("\n"," ",$arItem["PREVIEW_TEXT"]);
		$str = strip_tags($str); 
		$PLACEMARKS[$i]["TEXT"] ="<a href=".$arItem["DETAIL_PAGE_URL"]." style=\"color: #555555; font-family: Arial,Helvetica,sans-serif; font-size: 12px; text-decoration: none\">".$str."</a>";
		//получим название раздела
		$arIBlockSection = GetIBlockSection($arItem["IBLOCK_SECTION_ID"]);
		$sSectionName = $arIBlockSection["NAME"];
		unset($arIBlockSection);
		$PLACEMARKS[$i]["SECTION"] = $sSectionName;
		$PLACEMARKS[$i]["IMG"]=$arItem["PREVIEW_PICTURE"]["SRC"];
	}
	$i++;
}

reset($PLACEMARKS);

по полю
$PLACEMARKS[$i]["YEAR"]
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2012, 00:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

не уверен, но вроде так :
uasort($PLACEMARKS, function($a, $b){ $a=$a["YEAR"];$b=$b["YEAR"]; return ($a==$b) ? 0 :(($a>$b) ? 1:-1 )  });
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2012, 08:22
Аватар для InSys
Интересующийся
Отправить личное сообщение для InSys Посмотреть профиль Найти все сообщения от InSys
 
Регистрация: 01.02.2012
Сообщений: 12

впринципе по мимо примера выше, можно извернутся через
array_multisort

Да и вообще все возможные варианты сортировки см. тут:
Сортировка многомерных массивов по ключу на PHP

Последний раз редактировалось InSys, 08.02.2012 в 21:03.
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2012, 21:01
Аватар для InSys
Интересующийся
Отправить личное сообщение для InSys Посмотреть профиль Найти все сообщения от InSys
 
Регистрация: 01.02.2012
Сообщений: 12

Что-то стала мне интересна эта тема. В итоге провел тесты всех способов, и оказалось что array_multisort работает быстрее на порядок. Добавил результаты в обзор по ссылке выше.

Последний раз редактировалось InSys, 08.02.2012 в 21:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к элементам многомерного массива TheKIP Общие вопросы Javascript 7 05.08.2011 13:46
сортировка массива Nightmare jQuery 4 26.01.2011 08:52
сортировка массива с сохранением ассоциации индексов HelpeR Элементы интерфейса 1 24.02.2010 10:00
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 15:53