コードで配列として定義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
ソートを「ルール化」したい場合は、それを最初に配置する必要があります。
3 つの配列すべてを個別に並べ替えたい場合は、 を使用しないでくださいarray_multisort
。