как отсортировать массив объектов в php - PullRequest
0 голосов
/ 19 июня 2019

Я не могу отсортировать этот массив объектов. пожалуйста, помогите Я использую usort для сортировки массива.

Также я получаю эту ошибку:

Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное '=>' (T_DOUBLE_ARROW), ожидание ')' в /home/cg/root/128245/main.php в строке 7

Мне нужно отсортировать этот массив в порядке job_name атрибута моего класса.

<?php 
$gfg_array =Array
(
    [0] => Array
        (
            [status] => SUCCESS
            [duration] => 04:32:22
            [date] => 13-Jun-2019
            [start_stamp] => 02:29:32
            [type] => implicit
            [job_name] => build-bbjsd
        )

    [1] => Array
        (
            [status] => SUCCESS
            [change_sets] => Array
                (
                )
                [job_id] =>  # 4156
            [url] => http://www.html.com
            [duration] => 0:39:25
            [test_script] => {"tc_results": [{"status": "pass", "testcase_time": "0:01:06"}]} 
            [date] => 2019-06-13
            [start_stamp] => 9:30:34
            [type] => explicit
            [job_name] => json-dhj
        )

    [2] => Array
        (
            [status] => SUCCESS
            [duration] => 
            [date] => 
            [start_stamp] => 
            [type] => implicit
            [job_name] => ci-ulp

    [3] => Array
        (
            [status] => DISABLED
            [duration] => 
            [date] => 
            [start_stamp] => 
            [type] => implicit
            [job_name] => build-c201-qemux86-64
        )

    [4] => Array
        (
            [status] => SUCCESS
            [duration] => 04:30:30
            [date] => 13-Jun-2019
            [start_stamp] => 02:29:15
            [type] => implicit
            [job_name] => build-fss-image-full-l200-qemux86-64
        )

    [5] => Array
        (
            [status] => SUCCESS
            [change_sets] => Array
                (
                )

            [job_id] =>  # 4156
            [url] => http://www.html.com
            [duration] => 0:39:25
            [test_script] => {"tc_results": [{"status": "pass", 
            "testcase_time": "0:01:06"}]} 
            [date] => 2019-06-13
            [start_stamp] => 9:30:34
            [type] => explicit
            [job_name] => json-ci-ulp-fss-image-full-l200-qemux86-64
        )
)

function querySort ($x, $y) {
   return strcasecmp($x['job_name'], $y['job_name']);
}

usort($gfg_array, 'querySort');


print_r($gfg_array)
?>

Ответы [ 2 ]

1 голос
/ 19 июня 2019

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

function compareObjects( $a , $b )
{
    return strcmp( $a->job_name , $b->job_name );
}

usort( $gfg_array , "compareObjects" );

Также у вас есть синтаксическая ошибка в вашем коде, и вам нужно установить значения массива в виде строк, как показано ниже:

<?php 
$gfg_array =Array
(
    [0] => Array
        (
            [status] => "SUCCESS"
            [duration] => "04:32:22"
            [date] => "13-Jun-2019"
            [start_stamp] => "02:29:32"
            [type] => "implicit"
            [job_name] => "build-bbjsd"
        )

    [1] => Array
        (
            [status] => "SUCCESS"
            [change_sets] => Array
                (
                )
                [job_id] =>  "# 4156"
            [url] => "http://www.html.com"
            [duration] => "0:39:25"
            [test_script] => {"tc_results": [{"status": "pass", "testcase_time": "0:01:06"}]} 
            [date] => "2019-06-13"
            [start_stamp] => "9:30:34"
            [type] => "explicit"
            [job_name] => "json-dhj"
        )

    [2] => Array
        (
            [status] => "SUCCESS"
            [duration] => ""
            [date] => ""
            [start_stamp] => ""
            [type] => "implicit"
            [job_name] => "ci-ulp"

    [3] => Array
        (
            [status] => "DISABLED"
            [duration] => ""
            [date] => ""
            [start_stamp] => ""
            [type] => "implicit"
            [job_name] => "build-c201-qemux86-64"
        )

    [4] => Array
        (
            [status] => "SUCCESS"
            [duration] => "04:30:30"
            [date] => "13-Jun-2019"
            [start_stamp] => "02:29:15"
            [type] => "implicit"
            [job_name] => "build-fss-image-full-l200-qemux86-64"
        )

    [5] => Array
        (
            [status] => "SUCCESS"
            [change_sets] => Array
                (
                )

            [job_id] =>  "# 4156"
            [url] => "http://www.html.com"
            [duration] => "0:39:25"
            [test_script] => {"tc_results": [{"status": "pass", 
            "testcase_time": "0:01:06"}]} 
            [date] => "2019-06-13"
            [start_stamp] => "9:30:34"
            [type] => "explicit"
            [job_name] => "json-ci-ulp-fss-image-full-l200-qemux86-64"
        )
)

function querySort ($x, $y) {
   return strcasecmp($x['job_name'], $y['job_name']);
}

usort($gfg_array, 'querySort');


print_r($gfg_array)
?>
0 голосов
/ 19 июня 2019

Вы можете попробовать эту функцию ..

    function multisortByKeyValue( $k, $arr ) {
        $ids   = array();
        $index = 1;

        foreach ( $arr as $key => $row ) {
            $ids[ $key ] = intval( $row[ $k ] ) . '-' . $index . '-' . $key;
            $index ++;
        }

        natsort( $ids );

        $arr = array_merge( $ids, $arr );

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