Skip to content
Home / PHP / PHP Code Snippets / PHP natsort() multidimensional array

PHP natsort() multidimensional array

By default, PHP natsort() function does not work with multidimensional arrays.

     /**
     * @param array $array
     * @param string $sortByKey
     * @return array
     */
    public function natsort(array $array, string $sortByKey): array
    {
        if (empty($array)) {
            return $array;
        }

        $namedArray = [];
        $naturalSortKeys = [];
        foreach ($array as $item) {
            $naturalSortKeys[] = (string)$item[$sortByKey];
            $namedArray[(string)$item[$sortByKey]] = $item;
        }

        natsort($naturalSortKeys);

        $naturalSortArray = [];
        $sortOrder = 0;
        foreach ($naturalSortKeys as $key) {
            $naturalSortArray[$sortOrder++] = $namedArray[(string)$key];
        }

        return $naturalSortArray;
    }