Массив вида PHP значением SubArray

У меня есть следующая структура массива:

Array
        (
            [0] => Array
                (
                    [configuration_id] => 10
                    [id] => 1
                    [optionNumber] => 3
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [1] => Array
                (
                    [configuration_id] => 9
                    [id] => 1
                    [optionNumber] => 2
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [2] => Array
                (
                    [configuration_id] => 8
                    [id] => 1
                    [optionNumber] => 1
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )
    )

Что лучший способ состоит в том, чтобы заказать массиву возрастающим способом, на основе optionNumber?

Таким образом, результаты похожи:

Array
        (
            [0] => Array
                (
                    [configuration_id] => 8
                    [id] => 1
                    [optionNumber] => 1
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [1] => Array
                (
                    [configuration_id] => 9
                    [id] => 1
                    [optionNumber] => 2
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )

            [2] => Array
                (
                    [configuration_id] => 10
                    [id] => 1
                    [optionNumber] => 3
                    [optionActive] => 1
                    [lastUpdated] => 2010-03-17 15:44:12
                )
    )
96
задан jla 15 July 2019 в 03:01
поделиться

2 ответа

Используйте usort .

function cmp_by_optionNumber($a, $b) {
  return $a["optionNumber"] - $b["optionNumber"];
}

...

usort($array, "cmp_by_optionNumber");

В PHP ≥5.3 вместо этого следует использовать анонимную функцию :

usort($array, function ($a, $b) {
    return $a['optionNumber'] - $b['optionNumber'];
});

Обратите внимание, что оба приведенных выше кода предполагают, что $ a ['optionNumber'] является целым числом. Используйте @St. Решение Джона Джонсона , если они являются строками.


В PHP ≥7.0 используйте оператор космического корабля <=> вместо вычитания, чтобы предотвратить проблемы переполнения / усечения.

usort($array, function ($a, $b) {
    return $a['optionNumber'] <=> $b['optionNumber'];
});
185
ответ дан 24 November 2019 в 05:33
поделиться

Use usort

 usort($array, 'sortByOption');
 function sortByOption($a, $b) {
   return strcmp($a['optionNumber'], $b['optionNumber']);
 }
56
ответ дан 24 November 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: