[英]PHP array_multisort
我在排序 arrays 時遇到了一些困難。 我嘗試了 SORT_DESC、SORT_NUMERIC 方法,但它從來沒有用過。 即使我將 array_multisort 放在代碼中的其他任何位置。
所以這就是我的 arrays 的樣子:
Array
(
[0] => Array
(
[0] => 0.13
[1] => Ships From
[2] => Russia
)
)
Array
(
[0] => Array
(
[0] => 0.11
[1] => Color
[2] => Green
)
)
Array
(
[0] => Array
(
[0] => 0.1
[1] => Size
[2] => M
)
)
Array
(
[0] => Array
(
[0] => 0.12
[1] => Material
[2] => Flex
)
)
Array
(
[0] => Array
(
[0] => 0.13
[1] => Ships From
[2] => China
)
)
Array
(
[0] => Array
(
[0] => 0.11
[1] => Color
[2] => Red
)
)
Array
(
[0] => Array
(
[0] => 0.1
[1] => Size
[2] => L
)
)
Array
(
[0] => Array
(
[0] => 0.12
[1] => Material
[2] => Cotton
)
)
如您所見,我有雙 [0],並按該值對它們進行排序。 所以我的代碼如下所示:
foreach($value['options'] as $key => $option)
{
$sort = array();
$attribude= $this->attribute($option['key']);
$attribute_value= $this->attribude($getAttr->id, $option['value']);
$collection = array_push($sort, array($attribude->default_order, $attribude->label, $attribute_value->value));
print_r($sort);
}
我試圖添加array_multisort($sort, SORT_ASC);
基本上我可以在任何地方,但它從來沒有工作過。 任何想法如何解決這個問題?
我建議,如果可以的話,在嘗試排序之前重組你的數組。 下面是一個按數字 2 索引排序的重組數組的示例。 您可以通過更改此$row[2]
來調整索引,如$row[0]
以按索引零的浮點值排序。
$array = [
array(0.13,'Ships From','C'),
array(0.12,'Ships From','D'),
array(0.10,'Ships From','B'),
array(0.14,'Ships From','A'),
];
$a = array();
$b = array();
foreach ($array as $key => $row) {
$a[$key] = $row[2];
}
array_multisort($a, SORT_ASC, $array);
echo '<pre>';
print_r($array);
echo '</pre>';
Array
(
[0] => Array
(
[0] => 0.14
[1] => Ships From
[2] => A
)
[1] => Array
(
[0] => 0.1
[1] => Ships From
[2] => B
)
[2] => Array
(
[0] => 0.13
[1] => Ships From
[2] => C
)
[3] => Array
(
[0] => 0.12
[1] => Ships From
[2] => D
)
)
內聯解決方案:
usort($array, function($a, $b) { return $a[0] <=> $b[0]; });
旗艦運營商需要PHP 7+,否則手動比較。 對於反向 (DESC) 訂單交換 $a 與 $b。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.