ホームページ >バックエンド開発 >PHPチュートリアル >または[php配列のソートに関する質問? 】

または[php配列のソートに関する質問? 】

WBOY
WBOYオリジナル
2016-06-23 14:22:10803ブラウズ

申し訳ありませんが、私が説明した問題のはずですが、管理人はそれをはっきりと認識できず、私も呆然としてこれを投稿してしまいました。
http://bbs.csdn.net/topics/390595473?page=1#post-395606907

$arr = array('中','秋','节','快','乐')


実際、モデレータのプログラムは私が望む効果をほぼ準備できていますが、欠けているのはモデレータのプログラムです。メインプログラムは、[中]で始まるすべての単語を出力します。私が望む効果は、その前の単語も減らすことができるということです:
たとえば、このような並べ替えがあります (赤いフォント)
Happy Mid-Autumn Festival
Happy Mid-秋祭り
中秋祭りハッピー
中秋祭り
ハッピー秋祭り
秋祭り
ハッピー祭り
中秋
中秋


最後は配列になるのが一番だよ〜


前回の投稿でモデレータから提供されたプログラムを使用して変更できます。私は学び始めたプロのプログラマーですが、修正がわかりません。もう一度皆さんに助けを求めてください。


議論への返信(解決策)

削減の根拠は何ですか?
楽しい休暇をお過ごしください。参加してみませんか?

私のコードによると、一度実行した後、配列の最初の要素を削除して再度実行します
どれも「秋」で始まっていませんか?

リダクションの根拠は何ですか?
楽しい休暇をお過ごしください。参加してみませんか?

私のコードによると、一度実行した後、配列の最初の要素を削除して再度実行します
全部「秋」で始まっていませんか

ごめんなさい、まだ明確に説明できていません

根拠順序を減らすということは、実際には順序以外のすべてを並べることを意味します。
上記にすべてをリストしていません。申し訳ありません。誤解を招いた。

$arr = array('中','秋','节','快','乐');$res = array();for($j=0; $j<count($arr)-1; $j++) {  for($i=0; $i<=count($arr); $i++) {    $a = join('', array_slice($arr, $j, -$i));    if($i) {      foreach(array_slice($arr, -$i) as $v) $res[] = $a.$v;    }elseif($a) $res[] = $a;  }}$res = array_unique($res);$t = array_map('strlen', $res);array_multisort($t, SORT_DESC, $res);print_r($res);
Array
(
[0] =>ハッピー中秋節
[1] =>ハッピー秋節
[2] =>ハッピー中秋節
[3] =>ハッピー中秋お祭り
[4] = > 楽しい中秋祭り
[5] => 楽しい秋祭り
[7] => ; ハッピー中秋節
[9] => ハッピーフェスティバル
[11] => ハッピーフェスティバル
[13] => ; 秋祭り
[14] => 秋乐
[16] => 中秋節
[18] =>祭り
[19] => 中秋祭り
[21 ] => クアイ
中秋節おめでとうございます
中秋節おめでとうございます
中秋節おめでとうございます
ハッピー中秋祭り
ハッピー中秋祭り
ハッピー中秋祭り
中秋祭り
ハッピー
ハッピー秋祭り
ハッピー秋祭り
ハッピー秋祭り
ハッピー秋祭り

秋祭り

秋急げ
秋の音楽


ハッピーホリデー
ハッピーホリデー
ハッピーホリデー

ハッピー


最良の結果は、単語数の多い順に並べ替えることです



モデレータの方法に従ってうまくいきました ありがとうございました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。