-4

スクリプトから作成されたHTMLページの結果としてこれがあります。

thumbnail[++nr] = new makeIt(nr, "slides/IMG_3924.html", "thumbs/IMG_3924.jpg", 150, 100, "IMG_3924.jpg", "slides/IMG_3924.jpg", 150, 100, "", "sorting01", 0)
thumbnail[++nr] = new makeIt(nr, "slides/IMG_3909.html", "thumbs/IMG_3909.jpg", 100, 150, "IMG_3909.jpg", "slides/IMG_3909.jpg", 100, 150, "", "sorting02", 0)
thumbnail[++nr] = new makeIt(nr, "slides/IMG_3914.html", "thumbs/IMG_3914.jpg", 150, 100, "IMG_3914.jpg", "slides/IMG_3914.jpg", 150, 100, "", "sorting02", 0)
thumbnail[++nr] = new makeIt(nr, "slides/IMG_3904.html", "thumbs/IMG_3904.jpg", 100, 150, "IMG_3904.jpg", "slides/IMG_3904.jpg", 100, 150, "", "sorting01", 0)

そして、これがそれを生成したコードです

if ($file2 != "." && $file2 != ".." && strpos($file2,'.')!==0 ) {
  list($widthT2, $heightT2, $type2, $attr2) = getimagesize($pathToThumbs."/$name2.jpg"); 
  $thumbW2 = $widthT2;
  $thumbH2 = $heightT2;
  $out[]="thumbnail[++nr] = new makeIt(nr, \"slides/$name2.html\", \"thumbs/$name2.jpg\", $thumbW2, $thumbH2, \"$name2.jpg\", \"slides/$name2.jpg\", $widthT2, $heightT2, \"\", \"$commentaire\", 0)\n";
}

}

//usort($out, function ($a, $b){
//    return substr($b, -8) - substr($a, -8);
//});
sort($out);

foreach($out as $key => $value){
  print $value;
}

sorting01結果を で並べ替え、次にsorting02各行の末尾のテキストで並べ替えるにはどうすればよいですか? 各行の最後の 2 つのフィールドに含まれるものから配列を並べ替えたいと思います。

4

1 に答える 1

0

文字列の最後"some text in quotas"を検索して比較します。

function compare($a,$b) 
{
    // searching commentaire (searching last " and second from end ")

    $end_commentaire = strrpos($a, '"');
    $substr_a = substr($a, 0, $end_commentaire);
    $begin_commentaire = strrpos($substr_a, '"');   
    $substr_a = substr($substr_a, $begin_commentaire+1);

    $end_commentaire = strrpos($b, '"');
    $substr_b = substr($b, 0, $end_commentaire);
    $begin_commentaire = strrpos($substr_b, '"');   
    $substr_b = substr($substr_b, $begin_commentaire+1);

    //echo "|$substr_a|$substr_b|<br>";

    // compare 

    $result = strcmp($substr_a, $substr_b);

    // $substr_a and $substr_b are different,
    // don't compare rest of string 

    if( $result != 0 )
         return $result;

    // $substr_a and $substr_b are the same,
    // compare rest of string 

    return strcmp($a, $b);
}

usort($out, 'compare');

これを代わりに入れますsort($out)

編集:

正規表現の使用:

function compare($a,$b) 
{
    // searching commentaire (searching last " and second from end ")

    preg_match('/"([^"]*)"[^"]*$/', $a, $result_a);
    preg_match('/"([^"]*)"[^"]*$/', $b, $result_b);

    //echo "|$result_a[1]|$result_b[1]|$result_a[0]|$result_b[0]|<br>";

    // compare 

    $result =  strcmp($result_a[1], $result_b[1]);

    // $result_a[1] and $result_b[1] are different,
    // don't compare rest of string 

    if( $result != 0 )
         return $result;

    // $result_a[1] and $result_b[1] are the same,
    // compare rest of string 

    return strcmp($a, $b);
}

usort($out, 'compare');
于 2013-05-22T23:08:34.503 に答える