1

この多次元配列を画面名で並べ替えようとしています。

//Looping through this for each member of a group
unset($member_info);
$member_info->id           =   $member->id;
$member_info->screen_name  =   $member->screen_name;
$member_info->first_name   =   $member->first_name;
$member_info->last_name    =   $member->last_name;
$member_info->email        =   $member->email;

//Sort member_info by screen name
$member_array = sort_by_array_key($member_info,$member_info->screen_name,'ASC');
$member_list[] = $member_array;

ソート機能:

function sort_by_array_key($array,$sort_key,$dir = 'ASC') {
    usort($array, function($a,$b) use ($sort_key){
        return strnatcasecmp($a["$sort_key"], $b["$sort_key"]);
    });
    if ( $dir == 'DESC' ) { return array_reverse($array); }
    else { return $array; }
}

例として、並べ替え関数を実行した後でも、画面名は現在この順序になっています。

newUser
Chris
Carlos
Jason

私はおそらく間違った時間にソートを適用していますが、ここで他の同様の例を見た後、私はこれに問題がありました、助けてくれてありがとう!

4

2 に答える 2

0

まず、実際のリスト$member_listを並べ替える個々のアイテムを並べ替えます。また、オブジェクトを初期化する配列を並べ替えようとしています。配列を初期化するか、オブジェクトを並べ替えます。

あなたが主題について暗示しているように、あなたが本当に配列で遊びたいと思うなら、これはあなたがやろうとしていることかもしれません:

<?php

$member_info = Array();
$member_info['id']           =   '1';
$member_info['screen_name']  =   'Chris';
$member_info['first_name']   =   '';
$member_info['last_name']    =   '';
$member_info['email']        =   '';

$member_list[] = $member_info;

$member_info = Array();
$member_info['id']           =   '2';
$member_info['screen_name']  =   'Carlos';
$member_info['first_name']   =   '';
$member_info['last_name']    =   '';
$member_info['email']        =   '';

$member_list[] = $member_info;

$member_info = Array();
$member_info['id']           =   '3';
$member_info['screen_name']  =   'Jason';
$member_info['first_name']   =   '';
$member_info['last_name']    =   '';
$member_info['email']        =   '';

$member_list[] = $member_info;


//Sort member_list by screen name
$member_list = sort_by_array_key($member_list,'screen_name','ASC');

function sort_by_array_key($array,$sort_key,$dir = 'ASC') {
    usort($array, function($a,$b) use ($sort_key){
        return strnatcasecmp($a["$sort_key"], $b["$sort_key"]);
    });
    if ( $dir == 'DESC' ) { return array_reverse($array); }
    else { return $array; }
}

print_r($member_list);

/*
Array
(
    [0] => Array
        (
            [id] => 2
            [screen_name] => Carlos
            [first_name] =>
            [last_name] =>
            [email] =>
        )

    [1] => Array
        (
            [id] => 1
            [screen_name] => Chris
            [first_name] =>
            [last_name] =>
            [email] =>
        )

    [2] => Array
        (
            [id] => 3
            [screen_name] => Jason
            [first_name] =>
            [last_name] =>
            [email] =>
        )

)
*/
于 2012-04-26T22:15:53.343 に答える
0

ksort-「キーごとに配列を並べ替え、キーとデータの相関関係を維持します。これは主に連想配列に役立ちます。」

マニュアルを見る

于 2018-03-01T06:57:03.933 に答える