3 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超9個贊
假設(shè)兩個數(shù)組都按公共因素(即 )排序id。
uksort($arrayOriginal, function($a, $b) use ($arrayClean) {
return $arrayClean[$a]['surface'] < $arrayClean[$b]['surface'];
});
再次強(qiáng)調(diào),要使其工作,兩個數(shù)組必須包含相同順序的元素。在您的情況下,兩個數(shù)組的元素必須按以下順序(按 ID)排列:100、5465、40489
但我寧愿做類似的事情:
usort($arrayOriginal, function($a, $b) {
return yourSurfaceCleanMethod($arrayOriginal['surface']) < yourSurfaceCleanMethod($arrayOriginal['surface']);
});
當(dāng)然,一切都取決于您的需要,但是如果您$arrayClean僅將其用作對原始數(shù)組進(jìn)行排序的參考并且您yourSurfaceCleanMethod手邊有它,我肯定會執(zhí)行上述操作。

TA貢獻(xiàn)1854條經(jīng)驗 獲得超8個贊
我認(rèn)為如果您的 arrayOriginal 應(yīng)該根據(jù) HTML 標(biāo)記的內(nèi)容進(jìn)行排序,則不需要 arrayClean。
strip_tags()可用于排序函數(shù)中。
usort($arrayOriginal, function($a, $b) { return strip_tags($b['surface']) <=> strip_tags($a['surface']); });
注意:使用飛船操作符<=>得到正確的比較結(jié)果1、0和-1。

TA貢獻(xiàn)1851條經(jīng)驗 獲得超3個贊
我禮貌地接受了 Nemoden 的回答,因為從技術(shù)上講,它根據(jù)其范圍(所提供的測試用例)回答了問題。但這是我發(fā)現(xiàn)最適合我的解決方案:
$arrayOriginal = array(
array('id' => '100','surface' => '<span>300</span>','whatever' => 'qSDqsd'),
array('id' => '5465','surface' => '100 ch','whatever' => 'ghjkghjk'),
array('id' => '40489','surface' => '<b>1000</b>','whatever' => 'fgsdfg')
);
$arrayClean = array(
array('id' => '100','surface' => '300','whatever' => 'qSDqsd'),
array('id' => '5465','surface' => '100','whatever' => 'ghjkghjk'),
array('id' => '40489','surface' => '1000','whatever' => 'fgsdfg')
);
$surface = array_column($arrayClean, 'Surface');
array_multisort($surface, SORT_DESC, SORT_REGULAR, $arrayOriginal);
然后我得到這個輸出,這正是我想要的:
Array
(
[0] => Array
(
[id] => 40489
[surface] => <b>1000</b>
[whatever] => fgsdfg
)
[1] => Array
(
[id] => 100
[surface] => <span>300</span>
[whatever] => qSDqsd
)
[2] => Array
(
[id] => 5465
[surface] => 100 ch
[whatever] => ghjkghjk
)
)
Nemoden 的回答非常有幫助,但無論出于何種原因,它給了我這個:
Array
(
[1] => Array
(
[id] => 40489
[surface] => <b>1000</b>
[whatever] => fgsdfg
)
[0] => Array
(
[id] => 100
[surface] => <span>300</span>
[whatever] => qSDqsd
)
[2] => Array
(
[id] => 5465
[surface] => 100 ch
[whatever] => ghjkghjk
)
)
子數(shù)組以正確的順序打印,但子數(shù)組索引未更改。因此,當(dāng)導(dǎo)出到 javascript“arrayOriginal”時,它會回到其初始排序,因為子數(shù)組將再次根據(jù)它們的索引重新排序。至少,我是這樣經(jīng)歷的。
不管怎樣,現(xiàn)在問題已經(jīng)解決了,我在這里得到的答案非常有幫助。
- 3 回答
- 0 關(guān)注
- 295 瀏覽
添加回答
舉報