亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據矩陣 B 的順序對矩陣 A 進行排序

根據矩陣 B 的順序對矩陣 A 進行排序

PHP
達令說 2023-08-06 14:42:25
我想創建一個等于 A 的新數組(或對數組 A 進行排序),但按照 B 的順序。我只刪除數組 A 中不在數組 B 中的元素,但它們不會按照數組 B 的順序保留在數組 A 中。我的數組A是:$ array_A [0] ['name'] = Robson;$ array A [0] ['value'] = ROB; $ array_A [1] ['name'] = Morticia;$ array A [1] ['value'] = MORT;我的數組 B 是:$ array_B [0] = "Morticia"; $ array_B [1] = "Robson";我想創建一個等于 A 的新數組(或對數組 A 進行排序),但按照 B 的順序。預期結果:$array_A[0]['name'] = Morticia; $array_A[0]['value'] = MORT;$array_A[1]['name'] = Robson; $array_A[1]['value'] = ROB;我今天的代碼是:if(!empty($array_A)){    if (!empty($obj->allnames)){        $array_B = explode(",", $obj->allnames);         **// You have to sort array_A by array_B    }    $x=0;    foreach ($array_A as $value) {        if (!empty($array_B)){            if (!in_array($value->f_name,$array_B)){                unset($array_A[$x]);            }        }        $x++;    }}
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

如果我沒記錯的話,您可以將usort$array_B與自定義比較函數一起使用,通過使用array_search的值查找鍵$array_A,然后比較它們。

$array_A[0]['name'] = "Robson";

$array_A[0]['value'] = "ROB";

$array_A[1]['name'] = "Morticia";

$array_A[1]['value'] = "MORT";


$array_B[0] = "Morticia";

$array_B[1] = "Robson";



usort($array_A, function($a, $b) use ($array_B) {

? ? return array_search($a['name'], $array_B) > array_search($b['name'], $array_B);

});

print_r($array_A);

輸出


Array

(

? ? [0] => Array

? ? ? ? (

? ? ? ? ? ? [name] => Morticia

? ? ? ? ? ? [value] => MORT

? ? ? ? )


? ? [1] => Array

? ? ? ? (

? ? ? ? ? ? [name] => Robson

? ? ? ? ? ? [value] => ROB

? ? ? ? )


)

PHP演示


在 php 7 中你還可以使用<=>spaceship 操作符


usort($array_A, function($a, $b) use ($array_B) {

? ? return array_search($a['name'], $array_B) <=> array_search($b['name'], $array_B);

});


查看完整回答
反對 回復 2023-08-06
  • 1 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號