0

我以以下方式存储数组

$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 的值,也无法在不更改数组位置的情况下对其进行排序。

4

1 回答 1

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.

于 2012-11-05T06:39:35.693 回答