Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php помогите отсортировать массив / 25 сообщений из 26, страница 1 из 2
13.08.2013, 13:25
    #38364575
Nick-name
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
сложно конечно но вот пример проясняющий ситуацию
Код: php
1.
2.
3.
4.
5.
6.
$arr1 = array(
array(1=>'a1',2=>'ab1',2=>'abc1'),
array(1=>'a1',2=>'abс3',3=>'abc1',4=>'ab1'),
array(1=>'a1',2=>'abсс2,3=>'ab',4=>'abсв1'));
//и второй массив
$arr1 = array(1=>'abс3',2=>'a1',3=>'abc1');


Ну и вот нужно отсортировать первый массив так, чтобы порядок вложенных массивов выстроился в сответствии с расположением, значений элементов второго массива
...
Рейтинг: 0 / 0
13.08.2013, 13:52
    #38364634
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
...
Рейтинг: 0 / 0
13.08.2013, 15:17
    #38364793
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
Nick-nameсложно конечно но вот пример проясняющий ситуацию
Код: php
1.
2.
3.
4.
5.
6.
$arr1 = array(
array(1=>'a1',2=>'ab1',2=>'abc1'),
array(1=>'a1',2=>'abс3',3=>'abc1',4=>'ab1'),
array(1=>'a1',2=>'abсс2,3=>'ab',4=>'abсв1'));
//и второй массив
$arr1 = array(1=>'abс3',2=>'a1',3=>'abc1');


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

А вот я нифига не понял :). По какому принципу должны выстроиться эти массивы (и вообще, должны выстроиться сами массивы, или всё-таки их элементы)?

ScareCrow, прям неловко говорить, но Ваша функция не подходит, ни при каком из возможных раскладов :) Дело в том, что она умеет сортировать только в порядке возрастания или спадания значений. А ТС хоть и не объяснил что ему надо отсортировать и по какому принципу, но явно дал понять, что порядок должен быть задан вручную, с помощью другого массива.
...
Рейтинг: 0 / 0
13.08.2013, 16:10
    #38364932
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
авторзадан вручную, с помощью другого массива.
смотрим Example #3 и Example #4
...
Рейтинг: 0 / 0
13.08.2013, 16:51
    #38365050
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавторзадан вручную, с помощью другого массива.
смотрим Example #3 и Example #4

#3 - сортировка массивов в массиве по возрастанию одного из элементов вложенных массивов
#4 - регистронезависимая сортировка по возрастанию .

Говорю же, только по возрастанию и убыванию. В данном случае (с случайным порядком элементов) без дополнительных танцев неприменимо (нужны циклы и другое).

Если уж так, тогда лучше использовать usort или uasort. Но автор так и не написал, что ему нужно, потому и эти функции в итоге могут быть не тем, что надо.
usort смотрим пример 3 и 4. Хотя #3 удобнее и более общий... так можно отсортировать всё что угодно и в любом порядке.
...
Рейтинг: 0 / 0
13.08.2013, 17:01
    #38365078
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
автор#4 - регистронезависимая сортировка по возрастанию.
ну тоесть разбираться в примерах вы отказываетесь?
...
Рейтинг: 0 / 0
13.08.2013, 17:09
    #38365093
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
Nick-nameсложно конечно но вот пример проясняющий ситуацию
Код: php
1.
2.
3.
4.
5.
6.
$arr1 = array(
array(1=>'a1',2=>'ab1',2=>'abc1'),
array(1=>'a1',2=>'abс3',3=>'abc1',4=>'ab1'),
array(1=>'a1',2=>'abсс2,3=>'ab',4=>'abсв1'));
//и второй массив
$arr1 = array(1=>'abс3',2=>'a1',3=>'abc1');



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

PS: Почему то в этом примере оба массива присвоены одной и той же переменной.
...
Рейтинг: 0 / 0
13.08.2013, 18:09
    #38365177
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавтор#4 - регистронезависимая сортировка по возрастанию.
ну тоесть разбираться в примерах вы отказываетесь?

аппъяяяять

Ок, Ваш вариант... что делает пример 4?
...
Рейтинг: 0 / 0
13.08.2013, 22:39
    #38365411
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавтор#4 - регистронезависимая сортировка по возрастанию.
ну тоесть разбираться в примерах вы отказываетесь?

продолжаю ждать Ваш вариант описания работы данного примера. Что бы не повадно было говорить, что я чего-то не делаю или не понимаю (а то каждый раз одно и то же).
...
Рейтинг: 0 / 0
14.08.2013, 14:44
    #38366243
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ПрограмёрScareCrowпропущено...

ну тоесть разбираться в примерах вы отказываетесь?

продолжаю ждать Ваш вариант описания работы данного примера. Что бы не повадно было говорить, что я чего-то не делаю или не понимаю (а то каждый раз одно и то же).

и как всегда ответа нету. За свои слова никак не отвечаете, только участников форума вводите в заблуждение, когда им отвечают верно, а Вы вмешиваетесь со своим "да вы ни... не шарите, смотрите как я умею ссылки на форуме вставлять", а потом стараетесь выставить дураком того, кто говорит, что Вы фигню написали.

сорвался
...
Рейтинг: 0 / 0
14.08.2013, 15:37
    #38366354
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавторзадан вручную, с помощью другого массива.
смотрим Example #3 и Example #4
ScareCrowавтор#4 - регистронезависимая сортировка по возрастанию.
ну тоесть разбираться в примерах вы отказываетесь?
Таки присоединюсь к предложению Програмёра запостить сюда Ваш код, использующий оную функцию. Мне тоже очень интересно взглянуть.


Програмёри как всегда ответа нету. За свои слова никак не отвечаете, только участников форума вводите в заблуждение, когда им отвечают верно, а Вы вмешиваетесь со своим "да вы ни... не шарите, смотрите как я умею ссылки на форуме вставлять", а потом стараетесь выставить дураком того, кто говорит, что Вы фигню написали.

сорвался Давайте будем терпимы и подождем код, который Скаря скоро покажет. Надеюсь
...
Рейтинг: 0 / 0
14.08.2013, 16:01
    #38366399
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
постановка задачи.
от ТС

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

Моя - отсортировать многомерный массив по одной из размерностей.

пример - дан массив городов, с расстоянием их от Москвы. отсортировать по удаленности от оной.
мой код цифры случайны:
Код: php
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.
33.
<?php
$data = array(

  array(
        'city'=>'Орёл',
        'distance' => 200,
    ),
    array(
        'city'=>'Курск',
        'distance' => 500,
    ),
    array(
        'city'=>'ТУла',
        'distance' => 100,
    ),
    array(
        'city'=>'Харьков',
        'distance' => 800,
    ),

    array(
        'city'=>'Белгород',
        'distance' => 600,
    ),


);
    foreach ($data as $key => $row) {
        $distance[$key] = $row['distance'];
    }

    array_multisort($distance, SORT_ASC, $data);
var_dump($data);




пример номер 4 на который было показзано с самого начала:

Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array);

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);

print_r($array);



пример №4 м моем варианте - дан массив городов, отсортировать их по названию

Код: php
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.
33.
<?php
$data = array(

  array(
        'city'=>'Орёл',
        'distance' => 200,
    ),
    array(
        'city'=>'Курск',
        'distance' => 500,
    ),
    array(
        'city'=>'ТУла',
        'distance' => 100,
    ),
    array(
        'city'=>'Харьков',
        'distance' => 800,
    ),

    array(
        'city'=>'Белгород',
        'distance' => 600,
    ),


);
    foreach ($data as $key => $row) {
        $name[$key] = $row['city'];
    }

    array_multisort($name, SORT_ASC, $data);
var_dump($data);
...
Рейтинг: 0 / 0
14.08.2013, 16:16
    #38366431
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowпостановка задачи.
от ТС

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


Моя - отсортировать многомерный массив по одной из размерностей.

пример - дан массив городов, с расстоянием их от Москвы. отсортировать по удаленности от оной.
мой код цифры случайны:
Код: php
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.
33.
<?php
$data = array(

  array(
        'city'=>'Орёл',
        'distance' => 200,
    ),
    array(
        'city'=>'Курск',
        'distance' => 500,
    ),
    array(
        'city'=>'ТУла',
        'distance' => 100,
    ),
    array(
        'city'=>'Харьков',
        'distance' => 800,
    ),

    array(
        'city'=>'Белгород',
        'distance' => 600,
    ),


);
    foreach ($data as $key => $row) {
        $distance[$key] = $row['distance'];
    }

    array_multisort($distance, SORT_ASC, $data);
var_dump($data);




пример номер 4 на который было показзано с самого начала:

Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array);

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);

print_r($array);



пример №4 м моем варианте - дан массив городов, отсортировать их по названию

Код: php
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.
33.
<?php
$data = array(

  array(
        'city'=>'Орёл',
        'distance' => 200,
    ),
    array(
        'city'=>'Курск',
        'distance' => 500,
    ),
    array(
        'city'=>'ТУла',
        'distance' => 100,
    ),
    array(
        'city'=>'Харьков',
        'distance' => 800,
    ),

    array(
        'city'=>'Белгород',
        'distance' => 600,
    ),


);
    foreach ($data as $key => $row) {
        $name[$key] = $row['city'];
    }

    array_multisort($name, SORT_ASC, $data);
var_dump($data);



решённая Вами задача не соответствует задаче автора (а мы обсуждаем её, а не Вашу, о которой даже никто не знает). Задача автора больше похожа на "Есть список стран. Расположить их в том же порядке, в котором во втором массиве расположены столицы этих стран".

Итак, Вы снова расположили элементы в порядке возростания, а надо в произвольном. Решите задачу, которую привёл автор (или аналогичную, которую я написал).
...
Рейтинг: 0 / 0
14.08.2013, 16:17
    #38366436
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
автора надо в произвольном
еще аргументы будут?
...
Рейтинг: 0 / 0
14.08.2013, 16:19
    #38366437
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
если вы не можете свести эту задачу к "отсортировать многомерный массив по одной из размерностей" то дальнейший разговор теряет смысл.

задача "расположили элементы массива произвольном порядке" в решении не нуждается, ибо любой порядок элементов, даже сортированный, является случайным и может возникнуть с какойто вероятностью.
...
Рейтинг: 0 / 0
14.08.2013, 16:20
    #38366441
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrow,

Но автору нужна сортировка не по возрастанию или алфавиту. Второй массив указывает как раз порядок сортировки первого массива. Полагаю, нечто похожее на мускулевое
Код: sql
1.
... ORDER BY `field` IN ('abс3', 'a1', 'abc1')

Однако, топикстартер чего-то не торопится уточнить условия задачи. А то что есть, можно понимать двояко. Предположу еще вариант: в начало поставить элементы первого массива с максимальным количеством соответствий элементам второго.
...
Рейтинг: 0 / 0
14.08.2013, 16:23
    #38366449
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
автор Предположу еще вариант: в начало поставить элементы первого массива с максимальным количеством соответствий элементам второго.
это тоже достаточно просто сводится к моей. надо только посчитать меру схожести в первый массив, переданный в мультисорт.
...
Рейтинг: 0 / 0
14.08.2013, 16:24
    #38366450
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
родили новй термин:
автор[16:23:02] Уберукс: сортировка монте-карло? :)
...
Рейтинг: 0 / 0
14.08.2013, 16:25
    #38366457
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
авторВторой массив указывает как раз порядок сортировки первого массива.
именно это делает первый массив переданный вы array_multisort
...
Рейтинг: 0 / 0
14.08.2013, 16:37
    #38366477
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавторВторой массив указывает как раз порядок сортировки первого массива.
именно это делает первый массив переданный вы array_multisort

ну пишите... пишите... на словах всё круто ) "да я могу, в чём вопрос... только тут цикл... тут цикл... тут пересортировать немного". Я без проблем сфарганю с usort или uasort всё, что надо. Но заверяю, что Вы не сделаете этого с помощью приведённой Вами функции. ))
vkle предложил посчитать количество элементов (что сложнее, но с usort решается без проблем), я же предлагаю даже проще вариант... просто отсортировать вложенные массивы... ну, задачу описал уже.... если сможете - решите, а не сможете - тогда может хоть думать будете, перед тем как сказать что кто-то неправ (ладно бы что-то типа "Вы не правы, это работает так...", а то "разбираться не собираетесь?". это просто уже нагло, я себе такого не позволяю, хотя опыт позволяет, просто я знаю, что попадётся человек опытнее меня и осадит меня на счёт раз-два).
...
Рейтинг: 0 / 0
14.08.2013, 16:40
    #38366481
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
авторэто просто уже нагло, я себе такого не позволяю, хотя опыт позволяет, просто я знаю, что попадётся человек опытнее меня и осадит меня на счёт раз-два).
дальнейший разговор потерял уже даже остатки смысла.
...
Рейтинг: 0 / 0
14.08.2013, 16:40
    #38366482
tanur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
Да, задание интуитивно понятно. Но ваш пример неполон.
Опишите правило, согласно которому располагаются эл-ты в массиве-основе.
...
Рейтинг: 0 / 0
14.08.2013, 16:45
    #38366490
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
ScareCrowавторэто просто уже нагло, я себе такого не позволяю, хотя опыт позволяет, просто я знаю, что попадётся человек опытнее меня и осадит меня на счёт раз-два).
дальнейший разговор потерял уже даже остатки смысла.

примера не будет?
...
Рейтинг: 0 / 0
14.08.2013, 17:14
    #38366546
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
Модератор:
ScareCrowдальнейший разговор потерял уже даже остатки смысла.
Этот разговор изначально не имел большого смысла, так как толкование задачи весьма неоднозначно. Каждый из участников понял ее по-своему в меру своей фантазии. Возможно, Ваше толкование условий задачи весьма сильно отличается от понятого Программёром. Если оно так и есть, то вы решали _разные_ задачи.

На будущее: прошу воздержаться от вызывающих конфликт высказываний, вроде этого:ScareCrowну тоесть разбираться в примерах вы отказываетесь? Замечу, что это далеко не первый случай подобных реплик с Вашей стороны. Предлагаю излагать Ваше видение/понимание задачи и предложенного решения.

Програмёрпримера не будет? Не надо уже провоцировать бессмысленный спор.
...
Рейтинг: 0 / 0
14.08.2013, 17:37
    #38366589
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php помогите отсортировать массив
vkleScareCrow,

Но автору нужна сортировка не по возрастанию или алфавиту. Второй массив указывает как раз порядок сортировки первого массива. Полагаю, нечто похожее на мускулевое
Код: sql
1.
... ORDER BY `field` IN ('abс3', 'a1', 'abc1')



Задача решена ?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php помогите отсортировать массив / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]