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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сформировать массив по указателям на ключи, Нужен оптимальный способ 
V
    Опции темы
Wolf1994
Дата 23.9.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Функция возвращает массив указателей на элементы другого массива.

Пример.
Код

$some_array=array (0=>"x", 1=>"y", 2=>"z");
$pointers=sort_my_array ($some_array);
/*
$pointers, вернёт, например:
$pointer [0]=2;//2 ключ значения "z"
$pointer [1]=1;//1 ключ значения "y"
$pointer [2] - может и не быть;
*/


То есть функция sort_my_array обрабатывает массив и возвращает часть его ключей в определённом порядке.

Вопрос.

Как наиболее оптимально применить этот набор указателей к исходному массиву?

То есть, чтобы:
Код

$some_array==array (0=>"z", 1=>"y");


 smile 
PM MAIL WWW   Вверх
ewolf
Дата 23.9.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

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



Во-первых, почему нельзя непосредственно сам массив $some_array отсортировать по ключам или по значениям с помощью ksort или sort, соответственно

Если же все-таки нужно объединить массивы и ключи, то наверно можно так:

foreach( $pointers as $value )
   $some_data2[] = $some_data[$value];




Это сообщение отредактировал(а) ewolf - 23.9.2006, 23:47
PM MAIL ICQ   Вверх
Wolf1994
Дата 24.9.2006, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Цитата

Во-первых, почему нельзя непосредственно сам массив $some_array отсортировать по ключам или по значениям с помощью ksort или sort, соответственно

$some_array не является результирующим массивом и содержит только ограниченную информацию, необходимую для сортировки основного массива.

Код

foreach( $pointers as $value )
   $some_data2[] = $some_data[$value];

Так я и сделал... Нашёл в мануале array_combine, но эта функция для PHP 5...

Спасибо.
PM MAIL WWW   Вверх
G0rinich
Дата 25.9.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

function array_combine_($arr1, $arr2) // Строит новый массив, используя значения первого массива в качестве ключей, а второго - значений
{
    if (!(is_array($arr1) && is_array($arr2) && sizeof($arr1)==sizeof($arr2) && $arr1 && $arr2)) return false;
    $res=array();
    for ($i=0; $i<sizeof($arr1); $i++)
        $res[$arr1[$i]]=$arr2[$i];
    return $res;
}

Но в данном случае не эта функция нужна.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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