2

数値の 2D PHP 配列の値が含まれているかどうかを確認する方法を探しています

増加降順、または 混合の順序。

例:

array( 1, 2, 3, 4 ) // This is an incereasing numeric array
array( 4, 3, 2, 1 ) // This is a descending numeric array
array( 1, 3, 2, 4 ) // This is a mixed numeric array

どうすれば確認できますか?(高速な方法を探しています。すばやく実行する必要があります)

4

2 に答える 2

2

迅速な解決策(つまり、迅速に機能する)を探している場合は、次のようにデータ配列を操作する必要があると思います。

function getOrder($rgData)
{
   if(!count($rgData) || count($rgData)==1)
   {
      return null;
   }
   $sCurrent = (string)array_shift($rgData);
   $iOrder   = current($rgData)>$sCurrent?1:-1;
   foreach($rgData as $mValue)
   {
      if(($sCurrent>(string)$mValue && $iOrder== 1) ||
         ($sCurrent<(string)$mValue && $iOrder==-1))
      {
         return 0;
      }
      $sCurrent = (string)$mValue;
   }
   return $iOrder;
}

これは、対応する昇順、混合、および降順に対して 1、0、および -1 を返します。すべての値が文字列として扱われ、比較されることに注意してください。関数O(N)を使用すると複雑になりますが (最悪の場合) 、複雑になるため (最良の場合) 、この方法はより便利です。sort()O(N log(N))

于 2013-09-10T09:34:42.473 に答える
1

変数が呼び出されたと仮定すると、$arrayこれは正しい方向に始まる可能性があります。

$tempArray=sort($array);
if($array==$tempArray)
{
    // Array is in acsending order
}

$tempArray=arsort($array);
if($array==$tempArray)
{
    // Array is in desending order
}

これらのどちらも一致しない場合は、混在しています。

編集: Alma Do Mundo のおかげで、コードが修正されました。

于 2013-09-10T09:20:34.413 に答える