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

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

對數組值進行排序,但不更改原始鍵順序

對數組值進行排序,但不更改原始鍵順序

PHP
莫回無 2023-09-22 14:41:04
我有一個看起來像這樣的數組:$array = array(  '5' => 2,  '6' => 3,  '7' => 10,  '8' => 1);    我希望它看起來像這樣:$array = array(  '5' => 1,  '6' => 2,  '7' => 3,  '8' => 10);鍵應保持不變,但值應按升序排列。sort()鍵將被刪除并替換為從 0 開始的鍵。將asort()按照我想要的方式對值進行排序,但它將保持鍵關聯。我嘗試過sort(),但這些似乎都不是我需要的排序功能usort()。asort()我必須手動排序還是有可以使用的功能?
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您可以使用 提取數組的鍵array_keys,使用 對值進行排序sort,然后使用 將鍵與排序后的值組合起來array_combine

$array = array(

'5' => 2,

'6' => 3,

'7' => 10,

'8' => 1

);??

$keys = array_keys($array);

sort($array);

$array = array_combine($keys, $array);

print_r($array);

輸出:


Array

(

? ? [5] => 1

? ? [6] => 2

? ? [7] => 3

? ? [8] => 10

)

3v4l.org 上的演示


查看完整回答
反對 回復 2023-09-22
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

您可以sort()通過將調用捕獲到匿名函數調用中來將調用與全局范圍隔離。

這執行與 Nick 的答案相同的操作,但不聲明全局范圍的變量,不修改原始數組,并且可以寫成一行。我承認這是一個可讀性較差的變體。

代碼:(演示

var_export(

? ? array_combine(

? ? ? ? array_keys($array),

? ? ? ? (fn($v) => sort($v) ? $v : $v)($array)

? ? )

);


查看完整回答
反對 回復 2023-09-22
  • 2 回答
  • 0 關注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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