第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

按兩個(gè)給定鍵對(duì)多維數(shù)組進(jìn)行排序

按兩個(gè)給定鍵對(duì)多維數(shù)組進(jìn)行排序

PHP
墨色風(fēng)雨 2022-08-19 16:58:00
我有一個(gè)看起來像這樣的數(shù)組:[{    "id": "1",    "country_id": "1",    "spec_id": "1",    "spec_children_name": "SUPER REDUCES RATE",    "spec_children_first_col": "",    "spec_children_second_col": "",    "spec_children_third_col": ""},{    "id": "2",    "country_id": "1",    "spec_id": "1",    "spec_children_name": "REDUCED RATE",    "spec_children_first_col": "10% and 13%",    "spec_children_second_col": "food, passenger transport, accommodotion, newspaper, pharmaceutical products,\u2026.(10%); plants, antiques, firewood, cinema, theatre,\u2026(13%)",    "spec_children_third_col": ""},{    "id": "3",    "country_id": "1",    "spec_id": "1",    "spec_children_name": "MEDIUM RATE",    "spec_children_first_col": "",    "spec_children_second_col": "",    "spec_children_third_col": ""},{    "id": "4",    "country_id": "1",    "spec_id": "1",    "spec_children_name": "STANDARD RATE",    "spec_children_first_col": "20%",    "spec_children_second_col": "other",    "spec_children_third_col": ""},{    "id": "5",    "country_id": "1",    "spec_id": "1",    "spec_children_name": "ZERO RATE",    "spec_children_first_col": "",    "spec_children_second_col": "",    "spec_children_third_col": ""},    {        "id": "104",        "country_id": "2",        "spec_id": "1",        "spec_children_name": "REDUCED RATE",        "spec_children_first_col": "TEXT 547",        "spec_children_second_col": "TEXT 1000",        "spec_children_third_col": ""    }]我想要什么:我想按2個(gè)對(duì)象鍵比較對(duì)此數(shù)組進(jìn)行排序,如果和.最后,它應(yīng)該看起來像這樣:spec_children_namespec_id    [        [    {        "id": "1",        "country_id": "1",        "spec_id": "1",        "spec_children_name": "SUPER REDUCES RATE",        "spec_children_first_col": "",        "spec_children_second_col": "",        "spec_children_third_col": ""    },
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

您的問題基本上是如何根據(jù)兩個(gè)鍵對(duì)數(shù)組進(jìn)行排序。在許多編程語言中,包括PHP,答案是創(chuàng)建一個(gè)比較函數(shù)(有時(shí)稱為比較器),該函數(shù)根據(jù)其參數(shù)所需的相對(duì)順序返回值(通常為-1,0,1)。如果兩個(gè)鍵中的第一個(gè)參數(shù)不同,則根據(jù)第一個(gè)鍵的順序返回 -1 或 1。它們?cè)诘谝粋€(gè)鍵上相等,檢查第二個(gè)鍵 - 并根據(jù)第二個(gè)鍵的順序返回-1,0,1。此邏輯自然可以擴(kuò)展到任意數(shù)量的密鑰。PHP Spaceship 運(yùn)算符 <=> 為許多內(nèi)置類型實(shí)現(xiàn)了此邏輯。

下面的代碼演示了使用 PHP 的方案的這一點(diǎn)。它是從這個(gè)問題改編而來的。在這里,我假設(shè)您要按速率(零<超減<減<中等<標(biāo)準(zhǔn))進(jìn)行排序,然后按(數(shù)字)進(jìn)行排序。我也糾正了.spec_idSUPER REDUCES RATESUPER REDUCED RATE

$RATE_ORDERING = array(

  'ZERO RATE' => 1,

  'SUPER REDUCED RATE' => 2, 

  'REDUCED RATE' => 3,

  'MEDIUM RATE' => 4,

  'STANDARD RATE' => 5

  );

$arr = array(

    array('spec_id' => 2, 'spec_children_name' => 'STANDARD RATE'),

    array('spec_id' => 1, 'spec_children_name' => 'STANDARD RATE'),

    array('spec_id' => 2, 'spec_children_name' => 'ZERO RATE'),

    array('spec_id' => 1, 'spec_children_name' => 'MEDIUM RATE'),

    array('spec_id' => 2, 'spec_children_name' => 'REDUCED RATE'),

    array('spec_id' => 2, 'spec_children_name' => 'MEDIUM RATE'),

    array('spec_id' => 1, 'spec_children_name' => 'SUPER REDUCED RATE'),

    array('spec_id' => 2, 'spec_children_name' => 'SUPER REDUCED RATE'),

    array('spec_id' => 1, 'spec_children_name' => 'REDUCED RATE'),

    array('spec_id' => 1, 'spec_children_name' => 'ZERO RATE')

);


usort($arr, function ($a, $b) use ($RATE_ORDERING) {

  $result = $RATE_ORDERING[$a['spec_children_name']] - $RATE_ORDERING[$b['spec_children_name']];

  if ($result != 0) {

    return $result;

  }

  return $a['spec_id'] - $b['spec_id'];

});


var_dump($arr);

輸出:


array(10) {

  [0]=>

  array(2) {

    ["spec_id"]=>

    int(1)

    ["spec_children_name"]=>

    string(9) "ZERO RATE"

  }

  [1]=>

  array(2) {

    ["spec_id"]=>

    int(2)

    ["spec_children_name"]=>

    string(9) "ZERO RATE"

  }

  [2]=>

  array(2) {

    ["spec_id"]=>

    int(1)

    ["spec_children_name"]=>

    string(18) "SUPER REDUCED RATE"

  }

  [3]=>

  array(2) {

    ["spec_id"]=>

    int(2)

    ["spec_children_name"]=>                                                                                                   [17/133]

    string(18) "SUPER REDUCED RATE"

  }

  [4]=>

  array(2) {

    ["spec_id"]=>

    int(1)

    ["spec_children_name"]=>

    string(12) "REDUCED RATE"

  }

  [5]=>

  array(2) {

    ["spec_id"]=>

    int(2)

    ["spec_children_name"]=>

    string(12) "REDUCED RATE"

  }

  [6]=>

  array(2) {

    ["spec_id"]=>

    int(1)

    ["spec_children_name"]=>

    string(11) "MEDIUM RATE"

  }

  [7]=>

  array(2) {

    ["spec_id"]=>

    int(2)

    ["spec_children_name"]=>

    string(11) "MEDIUM RATE"

  }

  [8]=>

  array(2) {

    ["spec_id"]=>

    int(1)

    ["spec_children_name"]=>

    string(13) "STANDARD RATE"

  }

  [9]=>

  array(2) {

    ["spec_id"]=>

    int(2)

    ["spec_children_name"]=>

    string(13) "STANDARD RATE"

  }

}


查看完整回答
反對(duì) 回復(fù) 2022-08-19
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

宇宙飛船操作員將自動(dòng)處理所有數(shù)據(jù)類型。將動(dòng)態(tài)列名和排序方向“factor”傳遞到自定義函數(shù)作用域中。use()


代碼:


$objects = json_decode($json);


$column = 'spec_children_name';

$direction = 'asc';

$reverser = $direction === 'asc' ? 1 : -1;


uasort($objects, function($a, $b) use ($column, $reverser) {

    return $reverser * ($a->$column <=> $b->$column);

});


var_export($objects);

或者也許...

$objects = json_decode($json);


$rules = ['spec_id' => 'ASC', 'spec_children_name' => 'DESC'];


uasort($objects, function($a, $b) use ($rules) {

    foreach ($rules as $column => $order) {

        $left[] = $order === 'ASC' ? $a->$column : $b->$column;

        $right[] = $order === 'ASC' ? $b->$column : $a->$column;

    }

    return $left <=> $right;

});


var_export($objects);


查看完整回答
反對(duì) 回復(fù) 2022-08-19
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

幾乎沒有理由像array_multisort和array_column那樣重新發(fā)明一個(gè)功能。


$data =

[

    [

    'name' => 'John',

    'age'  => 34

    ],

    [

    'name'  => 'Jack',

    'age'   => 55,

    ],

    [

    'name' => 'Adam',

    'age'  => 42

    ],

    [

    'name' => 'Jack',

    'age'  => 78

    ],

    [

    'name' => 'Adam',

    'age'  => 80

    ]

];


array_multisort(array_column($data, 'name'), SORT_ASC, array_column($data, 'age'), SORT_DESC, $data);

var_export($data);

輸出:


array (

  0 => 

  array (

    'name' => 'Adam',

    'age' => 80,

  ),

  1 => 

  array (

    'name' => 'Adam',

    'age' => 42,

  ),

  2 => 

  array (

    'name' => 'Jack',

    'age' => 78,

  ),

  3 => 

  array (

    'name' => 'Jack',

    'age' => 55,

  ),

  4 => 

  array (

    'name' => 'John',

    'age' => 34,

  ),

)


查看完整回答
反對(duì) 回復(fù) 2022-08-19
  • 3 回答
  • 0 關(guān)注
  • 152 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)