3 回答

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

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

TA貢獻1851條經驗 獲得超3個贊
我禮貌地接受了 Nemoden 的回答,因為從技術上講,它根據其范圍(所提供的測試用例)回答了問題。但這是我發現最適合我的解決方案:
$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
)
)
子數組以正確的順序打印,但子數組索引未更改。因此,當導出到 javascript“arrayOriginal”時,它會回到其初始排序,因為子數組將再次根據它們的索引重新排序。至少,我是這樣經歷的。
不管怎樣,現在問題已經解決了,我在這里得到的答案非常有幫助。
- 3 回答
- 0 關注
- 297 瀏覽
添加回答
舉報