如何使用explode三个变量

时间:2012-11-05 06:28:25

标签: php arrays sorting

我按以下方式存储数组

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

1 个答案:

答案 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