-6

サーバー名の大きなリストがあります。fqdn を含む名前と含まない名前があります。

個々の文字列のリストは次のようになります。

  • サーバーA
  • serverA.something.com
  • サーバーA
  • サーバーB
  • serverB.something.com
  • サーバーC
  • serverD.something.com

上記のように個々の文字列のグループを分析し、4 つの結果を取得したいと思います。

  • serverA.something.com
  • serverB.something.com
  • サーバーC
  • serverD.something.com

基本的に、サーバーに複数のエントリがある場合、(fqdn を含めるために) 長いエントリを保持したいと考えています。サーバーのエントリに fqdn が含まれていない場合は、サーバー名のみを保持したいと考えています。結果セットに重複がないようにします。アドバイスをいただければ幸いです。

4

2 に答える 2

0

PHPの値の配列としてリストを持っていると思います。それを解決する方法は、rsort を使用することです。最初の要素はケッパーであり、その後のすべての要素をドロップすると、アキュムレータの最後の要素が優先されます。アルファベット順に取得するには、array_reduce で実行した後に結果を並べ替えます。

于 2013-06-11T23:08:12.750 に答える
0

それを試してみてください、私にとってはうまくいきます

<?php
$test = array();
$test[]="serverA";
$test[]="serverA.something.com";
$test[]="serverA";
$test[]="serverB";
$test[]="serverB.something.com";
$test[]="serverC";
$test[]="serverD.something.com";
sort($test);
$final = array();
$temp = "#";
for($i=0,$count = count($test);$i<$count;$i++){
    if(substr( $test[$i], 0, strlen($temp) ) == $temp)
        $temp = $test[$i];
    else {
    $final[] = $temp;
    $temp = $test[$i];
    }
}
//unset first 
unset($final[0]);
//add in last
$final[] = $temp;
var_dump($final);
?>

これをくれる

array
  1 => string 'serverA.something.com' (length=21)
  2 => string 'serverB.something.com' (length=21)
  3 => string 'serverC' (length=7)
  4 => string 'serverD.something.com' (length=21)
于 2013-06-11T23:08:21.030 に答える