2

ユーザーが検索するディレクトリをいくつか選択できるかどうかを考えてみましょう。そして、彼は以下のディレクトリにチェックマークを付けます。

http://google.com/apple
http://google.com/apple/red
http://google.com/apple/green
http://google.com/apple/yellow
http://google.com/orange
http://google.com/orange/1

このデータを挿入する準備ができたら、データベースとしましょう。以下のようなものを表示するために、PHPを介してリストを単純化できる方法はありますか?

http://google.com/apple
http://google.com/orange

ありがとうサイラス

4

1 に答える 1

1

これでうまくいくはずです:

sort( $paths );

$previous = $paths[0];
$simplified = array( $previous );

foreach ( $paths as $path ) {
    if ( $previous != substr( $path, 0, strlen( $previous ) ) ) {
        $simplified[] = $previous = $path;
    }
}

このコードは、文字列がそれ自体の拡張子の直前でソートされるという事実に依存しています。スラッシュは特別な方法で処理されないため、たとえば、"quux/foo"の有効なプレフィックスと見なされることに注意してください"quux/foobar"(これは、最初に思ったほど簡単に修正することはできません)。それが望ましくない場合は、必要に応じてパスの末尾にスラッシュが付いていることを確認してください。

于 2012-12-28T00:12:01.620 に答える