Нужно отсортировать массив в порядке ASC или DESC по значению заголовка - PullRequest
0 голосов
/ 31 августа 2018

Ниже мой массив,

     Array
   (
    [0] => Array
    (
        [topic_title] => gff
        [title] => gff
    )
[1] => Array
    (
        [topic_title] => new toipic
        [title] => new toipic
    )
[2] => Array
    (
        [topic_title] => Welcome!
        [title] =>Welcome!
    )
[3] => Array
    (
        [entry_title] => sdasdad
        [title] => sdasdad
    )
[4] => Array
    (
        [event_title] => red
        [title] => red
    )
[5] => Array
    (
        [event_title] => sa
        [title] => sa          
    )
[6] => Array
    (
        [event_title] => sadasd
        [title] => sadasd
    )
[7] => Array
    (
        [event_title] => Test Event
        [title] => Test Event
    )
)

Я хочу вывод, как показано ниже

   Array(
[0] => Array
        (
            [event_title] => Test Event
            [title] => Test Event
        )
 [1] => Array
        (
            [event_title] => Welcome!
            [title] => Welcome!
        )
    [2] => Array
        (
            [event_title] => sa
            [title] => sa
        )
    [3] => Array
        (
            [entry_title] => sdasdad
            [title] => sdasdad
        )    
    [4] => Array
        (
            [event_title] => sadasd
            [title] => sadasd
        )
    [5] => Array
        (
            [event_title] => red
            [title] => red
        )
    [6] => Array
        (
            [topic_title] => new toipic
            [title] => new toipic
        )     
    [7] => Array
        (
            [topic_title] => gff
            [title] => gff
        )
)

Это код печати из PHP 5.6.

Я использую функцию usort (), но не получил нужную. Я не могу отсортировать массив по возрастанию или убыванию по ключу заголовка.

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

Ответы [ 4 ]

0 голосов
/ 31 августа 2018

Вам необходимо использовать usort с strcasecmp :

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

usort($myArray, 'querySort');
0 голосов
/ 31 августа 2018

Вы можете использовать array_multisort () для достижения желаемого результата.

* 1003 например *

$title = array();
foreach ($post as $key => $row)
{
    $title[$key] = $row['title'];
}
array_multisort($title, SORT_DESC, $post);
0 голосов
/ 31 августа 2018

Попробуйте это:

$array = Array ( Array("topic_title" => "aatoipic","title" => "new toipic"),Array("event_title" => "Test Event","title" => "Test Event"),Array("topic_title" => "Welcome!", "title" => "Welcome!"),Array("entry_title" => "sdasdad","title" => "p",),Array("event_title" => "red","title" => "k",),Array("event_title" => "sa","title" => "sa"),Array("event_title" => "sadasd","title" => "d"),Array("topic_title" => "gff", "title" => "gff"),Array( "topic_title" => "new toipic","title" => "h"));

    $arr  = $array;
    $sort = array();
    foreach($arr as $k=>$v) {
        $sort['title'][$k] = $v['title'];
    }

    array_multisort($sort['title'], SORT_ASC, $arr);

    echo "<pre>";
    print_r($arr);

Вывод придет:

Array ( [0] => Array ( [event_title] => Test Event [title] => Test Event ) [1] => Array ( [topic_title] => Welcome! [title] => Welcome! ) [2] => Array ( [event_title] => sadasd [title] => d ) [3] => Array ( [topic_title] => gff [title] => gff ) [4] => Array ( [topic_title] => new toipic [title] => h ) [5] => Array ( [event_title] => red [title] => k ) [6] => Array ( [topic_title] => aatoipic [title] => new toipic ) [7] => Array ( [entry_title] => sdasdad [title] => p ) [8] => Array ( [event_title] => sa [title] => sa ) ) 
0 голосов
/ 31 августа 2018

usort добьется цели:

usort($array, function($x, $y) {
    return strcasecmp($x['title'], $y['title']);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...