Сортировка многомерных массивов - PullRequest
0 голосов
/ 22 июля 2011

У меня есть следующий массив, и я хочу отсортировать массив по значению.

(
    [bwin] => Array
        (
            [0] => Array
                (
                    [bookie] => bwin
                    [id_bookie] => 178537
                    [value] => 6.00
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => bwin
                    [id_bookie] => 178537
                    [value] => 1.45
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => bwin
                    [id_bookie] => 178537
                    [value] => 4.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [NordicBet] => Array
        (
            [0] => Array
                (
                    [bookie] => NordicBet
                    [id_bookie] => 201581
                    [value] => 5.75
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => NordicBet
                    [id_bookie] => 201581
                    [value] => 1.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => NordicBet
                    [id_bookie] => 201581
                    [value] => 4.30
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [Canbet] => Array
        (
            [0] => Array
                (
                    [bookie] => Canbet
                    [id_bookie] => 176582
                    [value] => 5.60
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => Canbet
                    [id_bookie] => 176582
                    [value] => 1.56
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => Canbet
                    [id_bookie] => 176582
                    [value] => 3.80
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [Expekt] => Array
        (
            [0] => Array
                (
                    [bookie] => Expekt
                    [id_bookie] => 235615
                    [value] => 5.60
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => Expekt
                    [id_bookie] => 235615
                    [value] => 1.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => Expekt
                    [id_bookie] => 235615
                    [value] => 4.25
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [StanJames] => Array
        (
            [0] => Array
                (
                    [bookie] => StanJames
                    [id_bookie] => 243649
                    [value] => 5.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => StanJames
                    [id_bookie] => 243649
                    [value] => 1.53
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => StanJames
                    [id_bookie] => 243649
                    [value] => 4.00
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [Gamebookers] => Array
        (
            [0] => Array
                (
                    [bookie] => Gamebookers
                    [id_bookie] => 203620
                    [value] => 5.00
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => Gamebookers
                    [id_bookie] => 203620
                    [value] => 1.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => Gamebookers
                    [id_bookie] => 203620
                    [value] => 4.25
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

    [Tipp3] => Array
        (
            [0] => Array
                (
                    [bookie] => Tipp3
                    [id_bookie] => 292604
                    [value] => 4.10
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 1
                )

            [1] => Array
                (
                    [bookie] => Tipp3
                    [id_bookie] => 292604
                    [value] => 1.50
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => 2
                )

            [2] => Array
                (
                    [bookie] => Tipp3
                    [id_bookie] => 292604
                    [value] => 3.40
                    [bettype] => 3way
                    [line] => 0.0
                    [bet] => x
                )

        )

)

Это несортированный вывод массива, но я хочу отсортировать массив, где строка равна 2, но строка будет меняться, иногда мне нужно отсортировать, где строка равна x или 1.

enter image description here

Ответы [ 3 ]

1 голос
/ 22 июля 2011

Вы можете использовать usort.Вот небольшой фрагмент.Вы можете делать все, что хотите, в этой функции.

function sorting_function($x, $y)
{
    if ($x['value'] == $y['value'])
        return 0;
    else if ($x['value'] < $y['value'])
        return -1;
    else
        return 1;
}

usort($table_array, 'sorting_function');
0 голосов
/ 22 июля 2011

Эти данные выглядят разделенными табуляцией.Если это так, разделите каждую строку на основе символа табуляции и сохраните ее в массиве.оттуда, тривиально выбрасывать пустые клетки.Пользовательскую функцию сортировки, которая принимает массив этих массивов, и int для столбца для сортировки (индекс, представляющий номер столбца), также должно быть легко сделать из этого.

0 голосов
/ 22 июля 2011

PHP довольно грубоват в работе с многомерными массивами.Существует несколько решений в комментариях на странице php sort function , и было бы довольно излишним размещать их все здесь ... прочитайте их, попробуйте некоторые из них, посмотрите, какиете, которые вам нравятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...