Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка массива по шаблону 
V
    Опции темы
Serious2008
Дата 8.1.2012, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Здравствуйте. 
Подскажите как реализовать. У меня есть допустим два массива. Один

Код

$data = Array
(
    [0] => Array
        (
          
        )

    [1] => Array
        (
          
        )

    [2] => Array
        (
          
        )

    [3] => Array
        (
           
        )

    [4] => Array
        (
            
        )



и второй
$arr =  Array
(
[4]
[2]
[1]
[3]
[0]
)

Мне нужно отсортировать первый так, чтобы его эллементы были в таком же порядке как во втором. Т.е. чтобы в итоге получилось вот такое.

Код

$data = Array
(
    [4] => Array
        (
            
        )
  
   [2] => Array
        (
          
        )

    [1] => Array
        (
          
        )

    [3] => Array
        (
           
        )
  [0] => Array
        (
          
        )

    

PM MAIL   Вверх
Sentox
Дата 8.1.2012, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



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

Это сообщение отредактировал(а) Sentox - 8.1.2012, 22:37
PM MAIL   Вверх
skyboy
Дата 9.1.2012, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



uksort поможет, да.
но. во-первых, код получится тяжелочитаемым(демо ниже).
во-вторых, в задаче есть большое белое пятно: как быть, если списки ключей массивов совпадают не полностью?
я предлагаю пройтись по ключам второго массива, вытягивая значения из первого во вспомогательную переменную.
как на меня вариант
Код

$arr1 = array('a'=> 5, 'b'=> 10, 'c'=> 20);
$arr2 = array('c'=> 0, 'b'=> 1, 'a'=> 2);
// ...
$result = array();
foreach($arr2 as $key => $_) // value is unimportant for us
    if (isset($arr1[$key])) 
        $result[$key] = $arr1[$key];
// ...
print_r($result);

гораздо понятнее, чем
Код

$arr1 = array('a'=> 5, 'b'=> 10, 'c'=> 20);
$arr2 = array('c'=> 0, 'b'=> 1, 'a'=> 2);
// ...
uksort($arr1, function ($key1, $key2) use ($arr2) {
static $keys = null;
if (is_null($keys)) {
    $keys = array_keys($arr2);
}
$keys = array_keys($arr2); 
$ind1 =  array_search( $key1, $keys, true);
$ind2 =  array_search($key2, $keys, true);
return $ind1> $ind2? 1: ($ind1< $ind2? -1: 0);
});
// ...
print_r($arr1);

PM MAIL   Вверх
Serious2008
Дата 9.1.2012, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



skyboy, 

Они будут совпадать точно 100% даже 200%

Спасибо твой вариант работает, для своих целей я даже убрал isset за ненадобностью

Это сообщение отредактировал(а) Serious2008 - 9.1.2012, 18:37
PM MAIL   Вверх
Gold Dragon
Дата 18.7.2012, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.