我按以下方式存储数组
$pos[$k] = $total[$k]." / ".$posts_ids[$k]." / ".$time[$k];
我使用以下方法从pos数组中提取值。
$a = $b = array();
foreach ($pos as $key => $value){
list($a[$key], $b[$key], $t[$key]) = explode('/', $value);
array_multisort($a, SORT_DESC, SORT_NUMERIC, $b ,$t);
}
但我无法提取变量$ t的值,也无法在不更改数组位置的情况下对其进行排序。
答案 0 :(得分:1)
您没有在代码中将t
定义为数组,除非您没有值,否则这不应该是一个问题(但在这种情况下,您会收到警告)。
至于multisort,正确的语法是
array_multisort($a, $b, $t, SORT_NUMERIC, SORT_DESC);
但是它不是很清楚你想要做什么,组织不同的值解析可能更方便(例如在多维数组中而不是多个数组,或使用自定义排序功能)。
<?php
$a = array();
$b = array();
$t = array();
$values = array("5/7/12","1/9/3");
foreach($values as $key => $value)
{
list($a[$key], $b[$key], $t[$key]) = explode('/', $value);
}
array_multisort($a, $b, $t, SORT_NUMERIC, SORT_DESC);
print_r($a);
print_r($b);
print_r($t);
?>
以及无法在不更改数组位置的情况下对其进行排序。
这是设计上的。 array_multisort
对您传递的第一个数组进行排序,即$a
。其他数组中的相应元素将根据$a
中项目的位置进行排序。
例如,如果$a
的第一个元素是最小的,它将被放在SORT_DESC
的最后一个元素中。但由于$a
的第一个元素是最后一个元素,$t
的最后一个元素也将被放在$t
之内,无论其值。
如果您希望$t
“排除”排序,则必须先将其排除。
如果您希望对所有三个数组进行独立排序,则不得使用array_multisort
。